判断一个数是否是三的幂数
分析:①同Leetcode231题思路,一直除3取余数,如果最后余数是1,则是3的幂数
②3的幂数的特点是如果这个数是3的幂数,它所有的约数都是三的幂数,我们可以借助Math类的一些方法求出int不溢出情况下最大的3的幂数,然后判断所输入的数x是否能被最大幂数整除。
①:java
class Solution {
public boolean isPowerOfThree(int n) {
if(n==0)
return false;
else if(n==1)
return true;
else
{
while(n%3==0&&n/3!=0)
{
n=n/3;
}
if(n==1)
return true;
else
return false;
}
}
}
②Java:
class Solution {
public boolean isPowerOfThree(int n) {
if(n<=0)
return false;
else
{
int max=(int)Math.pow(3, (int)(Math.log(2147483647)/Math.log(3)));//java中Math类中的方法可以求出3的最大幂数
if(max%n==0)
return true;
else
return false;
}
}
}