判断是否是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;
}
}
}