Last Updated on 2022-11-18 by Clay
題目
An ugly number is a positive integer whose prime factors are limited to 2
, 3
, and 5
.
Given an integer n
, return true
if n
is an ugly number.
Example 1:
Input: n = 6 Output: true Explanation: 6 = 2 × 3
Example 2:
Input: n = 1 Output: true Explanation: 1 has no prime factors, therefore all of its prime factors are limited to 2, 3, and 5.
Example 3:
Input: n = 14 Output: false Explanation: 14 is not ugly since it includes the prime factor 7.
Constraints:
-231 <= n <= 231 - 1
這題非常單純,就是判斷傳入的數值是否是 Ugly Number 即可。
解題紀錄
所有小於 0 的情況,包含 0 在內,全部都並非 Ugly Number,所以可以在一開始寫規則排除。
剩下的就是在可以除 2 的時候除以 2、可以除 3 的時候除以 3、可以除 5 的時候除以 5...... 剩下的值如果不是 1,那麼就代表這個數值存在著除了 2、3、5 以外的質因數。
C++ 範例程式碼
class Solution {
public:
bool isUgly(int n) {
// Base case
if (n < 1) return false;
while (n % 2 == 0) n /= 2;
while (n % 3 == 0) n /= 3;
while (n % 5 == 0) n /= 5;
return n == 1;
}
};