跳转至

LeetCode: 326. 3的幂

1、题目描述

给定一个整数,写一个函数来判断它是否是 3 的幂次方。

示例 1:

输入: 27
输出: true

示例 2:

输入: 0
输出: false

示例 3:

输入: 9
输出: true

示例 4:

输入: 45
输出: false

进阶: 你能不使用循环或者递归来完成本题吗?

2、解题思路

​ 假设一个数Num是3的幂,那么所有Num的约数都是3的幂,如果一个数n小于Num且是3的幂,那么这个数n一定是Num的约数。

​ 首先求解整数中,最大的3的幂是多少 $$ log_{3}Max $$ ​ 上面的式子,直接求是没办法的,没有直接用3为底,所以是用换底公式 $$ \frac{logMax}{log3} $$

bool isPowerOfThree(int n) {
    if(n<=0){
        return false;
    }


    int max = pow(3, (int) (log(INT32_MAX) / log(3)));

    return !(max % n);

}