1. 程式人生 > >263Ugly Number醜數

263Ugly Number醜數

編寫一個程式判斷給定的數是否為醜數。

醜數就是隻包含質因數 2, 3, 5 的正整數。

示例 1:

輸入: 6 輸出: true 解釋: 6 = 2 × 3

示例 2:

輸入: 8 輸出: true 解釋: 8 = 2 × 2 × 2

示例 3:

輸入: 14 輸出: false 解釋: 14 不是醜數,因為它包含了另外一個質因數 7。

說明:

  1. 1 是醜數。
  2. 輸入不會超過 32 位有符號整數的範圍: [−231,  231 − 1]。

醜數一定是有限個2、3、5的乘積,因為所有的正整數都能分解成1與一個或多個素數的乘積。如果一個數是醜數,那麼反覆除以2、3、5後,一定會是1;如果一個數不是醜數,那麼反覆除以2、3、5後,一定還會剩下了一個質數無法被2、3、5整除。

class Solution {
public:
    bool isUgly(int num) {
        if(num <= 0)
            return false;
        while(num % 2 == 0)
        {
            num /= 2;
        }
        while(num % 3 == 0)
        {
            num /= 3;
        }
        while(num % 5 == 0)
        {
            num /= 5;
        }
        if(num == 1)
            return true;
        return false;
    }
};