LeetCode 263——醜數

一、題目介紹

編寫一個程序判斷給定的數是否爲醜數。

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

示例 1:

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

輸入: 8
輸出: true
解釋: 8 = 2 × 2 × 2
示例 3:

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

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

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/ugly-number
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

二、解題思路

將給定數num,依次用指定的質數2、3、5進行求餘。如果餘數爲0,則更新num的值,直到num 爲1證明輸入的數爲醜數。詳細請見代碼。

三、解題代碼

class Solution {
public:
    bool isUgly(int num) {
        while(num != 1)
        {
            int temp = num;
            if(num % 2 == 0)
                num /= 2;
            if(num % 3 == 0)
                num /= 3;
            if(num % 5 == 0)
                num /= 5;
            if(temp == num)  //如果經過上面的嘗試,num沒有發生變化,則證明num不能被2、3或5整除,即不爲醜數
                return false;
        }
        return true;
    }
};

四、解題結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章