题目链接: ## Pow of Two
题目描述:
Given an integer, write a function to determine if it is a power of two.
题目解释:
给定一个整数,实现一个函数,来判断这个整数是否是2的次幂。
比如 8 为 2 的 3次幂, 5 则不是 2 的次幂。
解题方案:
如果一个数能一路被2整除,直到变成数字1,那么这个数就是2的次幂,例如16是2的次幂,那么16可以一直被2整除直到除到1。
这里我们需要注意边界条件:负数和零都不是2的次幂,可以直接排除掉。
在除2过程中,只要有一次不能被2整除,那么这个数就不是2的次幂
代码的实现过程就比较简单了,先排除边界条件,然后迭代除2,对于能整除到最后的数返回TRUE,对于中间不能被2整除的数字直接返回false即可。接下来咱们看具体的实现代码:
bool isPowerOfTwo(int n)
{
if (n <= 0 )
{
return false;
}
if (n == 1)
{
return true;
}
while(true)
{
if (n%2 == 1 && n != 1)
{
return false;
}
else
{
n /= 2;
if (n == 1)
{
return true;
}
}
}
}
这个题目比较简单,一个循环的应用,注意边界条件的处理即可。