题目链接:点击这里
如果已知big3是一个很大的3的幂,若big3%n==0
,那么n也是3的幂。(此方法对素数有效)
要做的就是找到int范围内最大的3的幂:
class Solution {
public:
bool isPowerOfThree(int n) {
if(n<=0) return false;
int k = log(INT_MAX)/log(3); //换底公式
int big3 = pow(3,k);
return big3%n==0;
}
};
已知整数范围内的3的幂次最大是1162261467:
class Solution {
public:
bool isPowerOfThree(int n) {
return n > 0 && 1162261467%n == 0;
}
};