Ugly Number

Ugly number 拆開來,可以寫成 $$2^i 3^j 5^k$$ 這種形式,換句話說,只要將 ugly number 不斷分別

  1. 除以 2 除到除到不能再除
  2. 除以 3 除到除到不能再除
  3. 除以 5 除到除到不能再除

最後必定會剩下 1,如果不是剩下 1,那就不是 ugly number。

基本的想法有了,記得要看清楚輸入數字的範圍。題目給的範圍是[$$ −2^{31} $$, $$ 2^{31} $$ − 1],所以會遇到負數還有 0,0 的話顯然不是 ugly number,負數的話,因為題目已經明確地寫出 Ugly numbers are positive numbers ,所以只要確認最後答案不要包含剩下 -1 的 case 就好。

用 Python 3 實作如下:

class Solution:
    def isUgly(self, num):
        """
        :type num: int
        :rtype: bool
        """
        if num == 0:
            return false

        uglyFactors = {2, 3, 5}

        for factor in uglyFactors:
            while(num % factor == 0):
                num = num/factor

        return num == 1

results matching ""

    No results matching ""