开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情
一、题目描述:
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 6
输出:true
解释:6 = 2 × 3
示例 2:
输入:n = 8
输出:true
解释:8 = 2 × 2 × 2
示例 3:
输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7 。
示例 4:
输入:n = 1
输出:true
解释:1 通常被视为丑数。
提示:
- -2^31 <= n <= 2^31 - 1
二、思路分析:
丑数就是只包含质因数 2, 3, 5 的正整数。
故判断一个数是不是丑数,只需将2、3、5整除并更新它即可,直到不能被某一个2、3、5整除;
最后的结果如果是1则是丑数
三、AC 代码:
class Solution(object):
def isUgly(self, n):
"""
:type n: int
:rtype: bool
"""
if n<=0:return False
for k in [2,3,5]:
while n%k==0:
n=n/k
return n==1
四、总结:
这是一道简单的丑数题目,当然我们还可以使用递归和迭代法解决,后面还有类似的题目,到时候再一起总结。
感觉很简单的一道题,但是我水平有点不太够,做了很长时间分享一下我的思路吧
题目说了质因子只有2,3,5那么只要能整除2或3或者5,那就除以该能整除的数字,最后如果是丑数一定可以让n除到1,不是丑数将不能得到1.
五、参考:
不断整除2,3,5,直到不能整除为止,判断整除后的数是否为1 - 丑数 - 力扣(LeetCode)