Skip to content

LeetCode: 263-Ugly Number 解題紀錄

Last Updated on 2022-11-18 by Clay

題目

An ugly number is a positive integer whose prime factors are limited to 23, 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;
    }
};


References


Read More

Tags:

Leave a Reply