1.题目
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
2.解题思路
看见这题我的第一个思路就是利用if来给予条件从而判断是否是三的幂次方。
bool isPowerOfThree(int n) { if(n<=0) return false; if(n==1) return true;
接着对于三的幂次方的理解要有个注重点,就是三的幂次方代表一个数的因数只有三和一而不是仅仅能搞除以三就可以了。而且要注意三的零次方等于一很容易遗漏这个条件,这个条件也起到了分隔作用所以也要注意。n/3就是用来判断是否因数只有一和三。
while(n>1) { if(n%3!=0) return false; n=n/3; } return true;
3.代码
bool isPowerOfThree(int n) { if(n<=0) return false; if(n==1) return true; while(n>1) { if(n%3!=0) return false; n=n/3; } return true; }
同类型题目
1.题目
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
2.解题思路
思路和三的幂次方相似,利用if来判断是否是四的幂次方,需要注意的点一个是四的零次方等于一返回true。
if(num==1) return true;
另一个就是四的幂次方的定义就是一个数的因数只有一和四,所以num/4就是用来判断是否因数只有一和四。
while(num>1) { if(num%4!=0) return false; num=num/4; }
3.代码
bool isPowerOfFour(int num) { if(num<=0) return false; if(num==1) return true; while(num>1) { if(num%4!=0) return false; num=num/4; } return true; }
1.题目
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
2.解题思路
思路和三的幂次方相似,利用if来判断是否是二的幂次方,需要注意的点一个是二的零次方等于一返回true。
if(n==1) return true;
另一个就是二的幂次方的定义就是一个数的因数只有一和二,所以n/2就是用来判断是否因数只有一和二。
while(n>1) { if(n%2!=0) return false; n=n/2; } return true;
3.代码
bool isPowerOfTwo(int n) { if(n<=0) return false; if(n==1) return true; while(n>1) { if(n%2!=0) return false; n=n/2; } return true; }