326-3的幂
访问量:618

一、题目

题目地址:https://leetcode-cn.com/problems/power-of-three/

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

示例 1:

输入: 27

输出: true


示例 2:

输入: 0

输出: false


示例 3:

输入: 9

输出: true


示例 4:

输入: 45

输出: false


二、解法

1、使用循环

思路:如果一个整数N是3的幂,那么其所有约数都是3的幂。所以N对3进行求余运算,肯定是0。然后不断的除以3之后,仍然能够对3进行求余为0,直到大于1。

func isPowerOfThree(n int) bool {
   if n < 0 {
      return  false
   }
   for n != 1 {
      if n % 3 != 0 {
         return false
      }
      n = n / 3
   }
   
   return true
}


2、不使用递归和循环

思路:如果一个整数N是3的幂,那么其所有约数都是3的幂。如果M小于N且M是N的约数,那么M一定是3的幂。

func isPowerOfThree(n int) bool {
	if n <= 0 {
		return false
	}
   var maxPowerofThreee int = 4052555153018976267 //int类型3的最大幂

	return maxPowerofThreee % n == 0
}