判斷是否是3的冪次方
問題描述:
給定一個整數,寫一個函數來判斷它是否是 3 的冪次方。
示例 1:
輸入: 27
輸出: true
示例 2:
輸入: 0
輸出: false
示例 3:
輸入: 9
輸出: true
示例 4:
輸入: 45
輸出: false
解題思路:
找出數字 n 是否是數字 b 的冪的一個簡單方法是,n%b只要餘數爲 0,就一直將 n 除以 b。如果n是b的冪,那麼最終結果肯定是1.
eg.(1)1%3 = =1(true);
(2)3%3= =0 3/3== 1(true)
(3)45%3= =0 15%3==0 5%3= =2(false)
代碼如下:
#include<iostream>
#include<math.h>
using namespace std;
bool isPowerOfThree(int n) {
if(n<=0){ //小於0返回false
return false;
}
while(n%3==0){
n/=3; //一直將 n 除以 3
}
return n==1; //判斷n的最終結果是否爲1
}
int main(){
int n;
while(cin>>n){
if(isPowerOfThree(n)){
cout<<"true"<<endl;
cout<<"--------------------------"<<endl;
}else{
cout<<"false"<<endl;
cout<<"--------------------------"<<endl;
}
}
}