一、題目介紹
編寫一個程序判斷給定的數是否爲醜數。
醜數就是隻包含質因數 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;
}
};