题目描述
给定一个整数,写一个函数来判断它是否是 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;
}
提交结果截图



















