問題:
Write a program to check whether a given number is an ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly since it includes another prime factor 7.
Note that 1 is typically treated as an ugly number.
大意:
寫一個程序來檢查給出的數字是否是一個丑數字。
丑數字是指只能被2、3、5整除的正數。比如說,6、8是丑數字而14就不是丑數字因為它還有7這個約數。
注意1也被看待成丑數字。
思路:
leetcode中的題目都有有意思,一會happy數字一會ugly數字,也不知道是國外就這么叫的還是純粹出題人有童心。這個題想著也沒什么好辦法,只能分別對2、3、5去看能不能被整除,能就除一下繼續判斷,直到不能被2、3、5整數了為止,看結果是不是1,是的話就是丑數字了,不是則不丑。看了看別人的做法,也大都是這個思路,這是實現上可能有點小差異。
還有一個要注意的是題目說丑數字是個正數,但沒說給出的數字都是正數,在這里栽了個跟頭,被0和負數弄得錯了兩次,我的Accepted率啊。。。
代碼(Java):
public class Solution {
public boolean isUgly(int num) {
if (num <= 0) return false;
while (true) {
if (num % 2 == 0) {
num = num / 2;
} else if (num % 3 == 0) {
num = num / 3;
} else if (num % 5 == 0) {
num = num / 5;
} else if (num == 1) {
return true;
} else {
return false;
}
}
}
}
合集:https://github.com/Cloudox/LeetCode-Record