1、迭代
我们可以判断当前整数是否被三整除,若是则继续将当前整数除三。最终根据最终结果是否等于一判断是否整除。
class Solution {
public:bool isPowerOfThree(int n) {while (n && n % 3 == 0) {n /= 3;}return n == 1;}
};
2、判断是否为最大 3 的幂的约数
考虑到范围为 2 31 − 1 2^{31}-1 231−1,此时的 3 的幂最小为 1162261467。若当前数是 1162261467 的约数则必定为 3 的幂。
class Solution {
public:bool isPowerOfThree(int n) {return n > 0 && 1162261467 % n == 0;}
};