题目链接
https://leetcode.com/problems/ugly-number/
题目描述
给定整数n,判断n是否为丑数。如果是,则返回true,否则返回false。丑数指质因数只包含2、3、5的数或质因数只包含2、3的数。
-2^31<=n<=2^31-1
示例
输入:n=14
输出:False
14不是丑数,因为它包含了另一个质因数7。
解题思路
分情况讨论。
首先n如果不是正整数,则一定不是丑数,即n<=0的情况直接返回False。如果n是正整数,我们就循环对n进行除数为2、3、5的整除操作,直到n不能被2、3、5整除。如果n最后为1,那么说明输入的数为丑数,否则不是丑数。
Python实现
class Solution:
# " / " 表示浮点数除法,返回浮点结果;
# " // " 表示整数除法,返回不大于结果的一个最大的整数
def isUgly(self, n: int) -> bool:
if n<=0:
return False
else:
while(n%2==0):
n = n / 2
while(n%3==0):
n = n / 3
while(n%5==0):
n = n / 5
return n == 1