判断一个数是否是三的幂数

分析:①同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;
        }
       
}
}