目录
一.前言
该算法主要能够实现输入一个整数n,能够判断出该整数是否是2的幂次方的功能。
例如:当这个整数n=1时,会输出 yes,因为它是2的0次幂。同理,当n=2的时候,也会输出yes,因为它是2的1次幂,而当输入3的时候,会输出no。
二.算法的核心原理
判断一个数是不是2的幂次方的方法,只需要用这个数不断的除以2,要是最后的结果是1,则证明这个数就是2的幂次方。
所以,为了达到这个效果,我们可以考虑使用循环。
首先明确循环的结束条件,也就是最后的结果是1的时候,就可以结束了,并且提示用户它是2的幂次方。
当然我们不需要这样才结束,当结果还没有除到1的时候,就已经不能被2整除了,这时候就已经可以确定这个数不是2的幂次方了,并把结果告知给用户。
三.算法的核心代码
int main() {
//给你一个整数n,请你判断它是否是2的幂次方。
int n = 16;
//当它的结果还没有到1,以及还能被2整除的时候,就继续执行这个循环。
while (n > 1 && n % 2 == 0) {
n /= 2;
}
//当循环结束的时候,再对结果进行判断,就可以得到答案了。
if (n == 1) {
printf("它是2的幂次方");
}
else {
printf("它不是2的幂次方");
}
return 0;
}
如上所示,我给定一个整数为16,并对它进行判断,下面我们来看一下代码的运行结果:
因为16是2的4次方,因此最后输出的结果也是它是2的幂次方。