3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27 输出: true
示例 2:
输入: 0 输出: false
示例 3:
输入: 9 输出: true
示例 4:
输入: 45 输出: false
进阶: 你能不使用循环或者递归来完成本题吗?
我的思路
换底公式思路有待考究
上网查了下,有些人提出使用换底公式
将c设为10,转换成代码非常简洁
class Solution { public boolean isPowerOfThree(int n) { return ((Math.log10(n) / Math.log10(3.0)%1 == 0));//这里判断是否为整数,倒是很有意思,可以学习。 } }
这个我个人认为有待考究,因为log10里面用到了泰勒展开来获取数据,精度确实是很高,但计算也费时,其实还是会影响些性能的。
思路一
直接把3次幂的最大值取出来,跟n取余,判断是否为0;
class Solution { public boolean isPowerOfThree(int n) { return (n>0 && 1162261467 % n == 0); } }