326.power-of-three


描述

Given an integer n, return true if it is a power of three. Otherwise, return false.

An integer n is a power of three, if there exists an integer x such that n == 3x.

题解

1. 循环 (简单)

var isPowerOfThree_by_loop = function(n) {
    if(n <= 0) return false;

    while(n > 1) {
        if(n % 3 === 0) {
            n = n / 3;
        } else return false;
    }
    return true;
};

2. 对数

主要用到的是换底公式:$\log_a{b}$ = $\frac{log_c{b}}{log_c{a}}$。

所以如果n是3的对数,那么$\log_3{n}$就是整数,即将其换底$\frac{log{n}}{log{3}}$为整数。

var isPowerOfThree = function(n) {
    // 之前有个2次方的判断是:!(n & (n - 1))
    if(n <= 0) return false;
    // 对数
    let tem = Math.log10(n) / Math.log10(3);
    // 如果是整数
    return (tem - Math.floor(tem)) === 0
};

文章作者: 阿汪同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 阿汪同学 !
评论
  目录