1. 程式人生 > >【LeetCode 簡單題】69-醜數

【LeetCode 簡單題】69-醜數

宣告:

今天是第69道題。編寫一個程式判斷給定的數是否為醜數。醜數就是隻包含質因數 2, 3, 5 的正整數。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除

(手動比心ღ( ´・ᴗ・` ))

正文

題目:編寫一個程式判斷給定的數是否為醜數。醜數就是隻包含質因數 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]。

解法1。常規解法,遍歷輸入的數字num,看看它對於2、3、5這3個因子是否能整除,不能就返回False,如果能最後整除完肯定是1,程式碼如下。

執行用時: 36 ms, 在Ugly Number的Python提交中擊敗了44.74% 的使用者

class Solution(object):
    def isUgly(self, num):
        """
        :type num: int
        :rtype: bool
        """
        if num == 0:
            return False
        while num != 1:
            if num%2 == 0:
                num /= 2
            elif num%3 == 0:
                num /=3
            elif num%5 == 0:
                num /=5
            else:
                return False
        return True

結尾

解法1:原創