[leetcode]326 3的幂

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

思路

有点脑筋急转弯的题目,第一思路肯定是用循环一直取余,看看是否能保证除3的余数一直是0;
还可以又一个思路,就是3这个数字是质数,也就是说,如果一个数n它能被\(3^i\)整除,这也就说明了它本身一定是3的某次幂(因为\(3^i\)最小单元是3),同时由于题目给出了一个范围(32位整形的范围),我们取i为20就可以大于所有的输入了,判断条件就可以非常的简单了;

代码

class Solution:
    def isPowerOfThree(self, n: int) -> bool:
        return n > 0 and 3486784401 % n == 0
posted @ 2021-01-17 19:00  随风EK  阅读(70)  评论(0)    收藏  举报