给定任意随机数,判定是否为3的乘方。
1. 递归
public class Solution { public boolean isPowerOfThree(int n) { if (n == 1) return true; if (n % 3 >0 || n == 0) return false; //n已经除不尽的两种情况 return isPowerOfThree (n / 3); } }
2. 任何一个3的i次方一定能被int型里最大的3的i次方整除,如下所示:
if (n>0) { if (1162261467 % n == 0) return true; else return false; }
3. log函数
class Solution { public: bool isPowerOfThree(int n) { double res = log10(n) / log10(3); //有精度问题,不要用log return (res - int(res) == 0) ? true : false; } };