bool isPowerOfThree(int n) {
while(n>=3){
if(n%3!=0)
return false;
n/=3;
}
return n==1;
}
bool isPowerOfThree(int n) {
if(n<3)
return n==1;
if(n%3!=0)
return false;
return isPowerOfThree(n/3);
}
bool isPowerOfThree(int n) {
while(n&&n%3==0){
n/=3;
}
return n==1;
}
1162261467为int中最大的3的指数.
bool isPowerOfThree(int n) {
return (n>0&&1162261467%n==0);
}
n为3的指数,则log3(n)为整数,利用换底公式做,log3(n)=log10(10)/log10(3),此处只能以10为底,不能以2或者e为底。原因如下:log(243) = 5.493061443340548 log(3) = 1.0986122886681098
==> log(243)/log(3) = 4.999999999999999
log10(243) = 2.385606273598312 log10(3) = 0.47712125471966244
==> log10(243)/log10(3) = 5.0。若n-int(n)==0,则n为整数。
bool isPowerOfThree(int n) {
return (n>0&&log10(n)/log10(3)-int(log10(n)/log10(3))==0);
}