1. 题目描述
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的n次方。
2. 解题思路
和题目231很类似,翻找Discuss发现有人使用了log10这个方法,并且这个方法有效解决了之前出现的精度的问题,但是很遗憾没找到为何使用这两个函数在精度上会有区别。并且测试在精度大于等于14位时,结果被接受了(Math.abs(a-(int)a)<0.00000000000001)
3. Code
public class Solution {
public boolean isPowerOfThree(int n) {
if(n <= 0)
{
return false;
}
double result = Math.log10(n)/Math.log10(3);
return result == Math.floor(result);
}
}