【题目描述】
编写一个程序判断给定的数是否为丑数。
丑数就是只包含质因数 2, 3, 5 的正整数。
【示例1】
输入: 6
输出: true
解释: 6 = 2 × 3
【示例2】
输入: 8
输出: true
解释: 8 = 2 × 2 × 2
【示例3】
输入: 14
输出: false
解释: 14 不是丑数,因为它包含了另外一个质因数 7。
【提示】
1、1 是丑数。
2、输入不会超过 32 位有符号整数的范围: [−231, 231 − 1]。
【思路】
1、丑数:因数(约数)全是 质数的数称为丑数
2、假如一个数为n,n除以2直到不能被整除为止,接着再除以3不能被整除为止, 接着除以5 不能被整除为止
3、判断n是否等于1
4、时间复杂度约等于O(log3^n) (以三为底n的对数)
5、空间复杂度O(1)
Swift代码实现:
func isUgly(_ num: Int) -> Bool {
if num == 0 { return false }
var tmp = num
while tmp%2 == 0 {
tmp/=2
}
while tmp%3 == 0 {
tmp/=3
}
while tmp%5 == 0 {
tmp/=5
}
return tmp == 1
}
网友评论