题目
难度:★☆☆☆☆
类型:数学
编写一个程序判断给定的数是否为丑数。
丑数就是只包含质因数 2, 3, 5 的正整数。
说明:
- 1 是丑数。
- 输入不会超过 32 位有符号整数的范围: [−231, 231 − 1]。
示例
示例 1:
输入: 6
输出: true
解释: 6 = 2 × 3
示例 2:
输入: 8
输出: true
解释: 8 = 2 × 2 × 2
示例 3:
输入: 14
输出: false
解释: 14 不是丑数,因为它包含了另外一个质因数 7。
解答
这道题我们可以用循环去做:
只要数字中包含因子2、3或5,我们就除以这个因子,直到这个数变为1或者变为无法被2、3和5整除的数;
注意考虑输入为负数、零和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 # 则一定不是丑数
如有疑问或建议,欢迎评论区留言~