263. 丑数(Python)

题目

难度:★☆☆☆☆
类型:数学

编写一个程序判断给定的数是否为丑数。

丑数就是只包含质因数 2, 3, 5 的正整数。

说明:

  1. 1 是丑数。
  2. 输入不会超过 32 位有符号整数的范围: [−231, 231 − 1]。

示例

示例 1:
输入: 6
输出: true
解释: 6 = 2 × 3

示例 2:
输入: 8
输出: true
解释: 8 = 2 × 2 × 2

示例 3:
输入: 14
输出: false
解释: 14 不是丑数,因为它包含了另外一个质因数 7。

解答

这道题我们可以用循环去做:

  1. 只要数字中包含因子2、3或5,我们就除以这个因子,直到这个数变为1或者变为无法被2、3和5整除的数;

  2. 注意考虑输入为负数、零和1等特殊情况。

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

        while True:                 # 死循环

            if num == 1:            # 如果输入为1或num变成1
                return True         # 说明是丑数

            if num % 2 == 0:        # 如果是2的倍数
                num = num // 2      # 则除以2
            elif num % 3 == 0:      # 如果是3的倍数
                num = num // 3      # 则除以3
            elif num % 5 == 0:      # 如果是5的倍数
                num = num // 5      # 则除以5
            else:                   # 如果都不是
                return False        # 则一定不是丑数

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(263. 丑数(Python))