题目描述
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false。
整数 n 是 3 的幂次方需满足:存在整数 x 使得
n
=
3
x
n = 3^x
n=3x
问题分析
要证明一个整数是三的幂次方,显然我们可以将其余的不是三的幂次方的数写作下式
n
=
m
∗
3
x
+
y
n = m*3^x+y
n=m∗3x+y
其中y是小于
3
x
3^x
3x的,所以对于此n连续除去x个3会得到m,如果m是1的话,y是0的话就能够保证n是3的幂次方。
所以如果能保证,n除去3得到的商仍是3的倍数,就能保证y=0,如果最后求出的商为1说明此数为3的幂次方。
代码
bool isPowerOfThree(int n) {
if(n<=0){
return 0;
}
while(n%3==0){
n/=3;
}
return n==1;
}