263. 丑數(shù)(Python)

題目

難度:★☆☆☆☆
類型:數(shù)學(xué)

編寫一個(gè)程序判斷給定的數(shù)是否為丑數(shù)。

丑數(shù)就是只包含質(zhì)因數(shù) 2, 3, 5 的正整數(shù)。

說(shuō)明:

  1. 1 是丑數(shù)。
  2. 輸入不會(huì)超過 32 位有符號(hào)整數(shù)的范圍: [?231, 231 ? 1]。

示例

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

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

示例 3:
輸入: 14
輸出: false
解釋: 14 不是丑數(shù),因?yàn)樗肆硗庖粋€(gè)質(zhì)因數(shù) 7。

解答

這道題我們可以用循環(huán)去做:

  1. 只要數(shù)字中包含因子2、3或5,我們就除以這個(gè)因子,直到這個(gè)數(shù)變?yōu)?或者變?yōu)闊o(wú)法被2、3和5整除的數(shù);

  2. 注意考慮輸入為負(fù)數(shù)、零和1等特殊情況。

class Solution(object):
    def isUgly(self, num):
        """
        :type num: int
        :rtype: bool
        """
        if num <= 0:                # 特殊情況,特殊對(duì)待
            return False

        while True:                 # 死循環(huán)

            if num == 1:            # 如果輸入為1或num變成1
                return True         # 說(shuō)明是丑數(shù)

            if num % 2 == 0:        # 如果是2的倍數(shù)
                num = num // 2      # 則除以2
            elif num % 3 == 0:      # 如果是3的倍數(shù)
                num = num // 3      # 則除以3
            elif num % 5 == 0:      # 如果是5的倍數(shù)
                num = num // 5      # 則除以5
            else:                   # 如果都不是
                return False        # 則一定不是丑數(shù)

如有疑問或建議,歡迎評(píng)論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容