问题描述:
Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?
首先,考虑最简单的做法,不断的除以3去进行验证,代码如下:
class Solution {
public boolean isPowerOfThree(int n) {
if(n == 0) return false;
while(n != 1){
if(n % 3 != 0)
return false;
n = n / 3;
}
return true;
}
}
但是,题目里面有提到,能够不用循环进行解答?由于输入的是int类型,最大的3的次方数为3^19=1162261467,所以只要判断这个数能不能被要判断的数整除即可。代码如下:
class Solution {
public boolean isPowerOfThree(int n) {
if(n == 0) return false;
return (n > 0 && 1162261467 % n == 0);
}
}