【每天学习一点算法 2026/01/09】3的幂

每天学习一点算法 2026/01/09

题目:3的幂

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

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

作者:LeetCode

链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnsdi2/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  1. 如果整数 n 是 3 的幂次方,那么一定满足:

    • n 对 3 取余为0。
    • n 除以 3 之后,如果大于 2 ,对 3 取余还是为 0。
    • 然后一直除以 3,最终会等于 1。

    根据这个规律我们可以得出这个题的解法:

    typescript 复制代码
    function isPowerOfThree(n: number): boolean {
      while (n > 2 && n % 3 === 0) {
        n = Math.floor(n / 3)
      }
      if (n === 1) return true
      else return false
    };
  2. 因为 3 是质数,一个数的约数,其质因数只能包含这个数本身的质因数,且每个质因数的指数不超过原数中对应质因数的指数。

    所以 3 的幂次方,一定是 3 的 m 次幂(大于n)的约数,所以我们可以拿到 n 范围内最大的 3 的幂,判断 n 是否为他的约数即可。

    typescript 复制代码
    function isPowerOfThree(n: number): boolean {
      return n > 0 && Math.pow(3, 19) % n === 0
    };

题目来源:力扣(LeetCode)

相关推荐
专注仿真34 分钟前
问答大模型技术方案算法实现-RAPTOR树构建算法与BEG集成使用
python·算法
xiaoxiangsiyan1 小时前
RHCE2026完整版全知识点清单
运维·网络·学习·自动化·rhce
zlinear数据采集卡1 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
Titan20242 小时前
Linux网络基础知识
linux·服务器·网络·c++·学习
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(41):Agentic Plan Caching——将历史执行轨迹转化为可复用的计划记忆
论文阅读·人工智能·学习·开源·github
woshihuanglaoshi2 小时前
错题四科入库:鸿蒙错题本种子数据与复习队列效果
学习·华为·harmonyos·鸿蒙
GeekZHR2 小时前
C语言指针进阶补充6:动态内存管理、mem系列内存函数、复杂指针声明,一次补齐指针的“三大盲区“
java·c语言·算法·指针
Herbert_hwt2 小时前
第七章 Java深入理解枚举类型
java·开发语言·算法
hsjiasb2 小时前
FreeRTOS学习(二十九)——低功耗Tickless Idle
学习·学习笔记·freertos
.道阻且长.3 小时前
8.LeetCode算法习题讲解--滑动窗口--长度最小的子数组
算法·leetcode·职场和发展