如何判断一个数是否是2的幂
我想创建一个函数,它接受一个数字并检查这个数字是否是 2 的幂。比如:fn(0) 是否,fn(1) 是是,fn(2) 是是,fn(3) 是否
等等...我试图创建一个像 power(N,K,R) 这样的幂函数,但是如果我问像 power(2,_,8) 这样的东西,这不起作用。任何帮助将不胜感激。
回答
如果我们使用 prolog,我们可以这样做:
pow2(X) :- X > 0 , 0 is X / (X-1).
这/是按位与。所以 ifX是二的幂,它看起来像1000...0二进制,因此X-1is111...1和按位 AND 因此是0。很明显,这只发生在 2 的幂上。
在线试试吧!