Ugly Number
Ugly number 拆開來,可以寫成 $$2^i 3^j 5^k$$ 這種形式,換句話說,只要將 ugly number 不斷分別
- 除以 2 除到除到不能再除
- 除以 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