Description:
Given an integer, write a function to determine if it is a power of three.
Example 1:
Input: 27
Output: true
Example 2:
Input: 0
Output: false
Example 3:
Input: 9
Output: true
Example 4:
Input: 45
Output: false
Follow up:
Could you do it without using any loop / recursion?
题意:判断给定的数是否是3的幂次方;
解法一(循环):很自然的可以想到用循环来计算,是否每次都可以被3整除;
Java
class Solution {
public boolean isPowerOfThree(int n) {
if (n < 1) return false;
while (n > 0) {
if (n == 1) break;
if (n % 3 == 1 || n % 3 == 2) return false;
n /= 3;
}
return true;
}
}
解法二(非循环/递归):考虑Int可以表示的3的幂次方的最大值为319;如果给定的数可以表示为3的幂次方,那么这个数一定可以整除319;
Java
class Solution {
public boolean isPowerOfThree(int n) {
return n > 0 && Math.pow(3, 19) % n == 0;
}
}