题目描述
原题链接:丑数
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例
输入:n = 6
输出:true
解释:6 = 2 × 3
输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7 。
解答
如果输入的数能被 2 整除,那就将它除以 2; 如果输入的数能被 3 整除,那就将它除以 3; 如果输入的数能被 5 整除,那就将它除以 5; 再处理下边界情况,当数小于或等于 1 时返回 true,其他情况返回 false 即可:
/**
* @param {number} n
* @return {boolean}
*/
var isUgly = function (n) {
if (n <= 0) return false
while (n % 2 === 0) {
n /= 2
}
while (n % 3 === 0) {
n /= 3
}
while (n % 5 === 0) {
n /= 5
}
return n === 1
}
复杂度分析:
- 时间复杂度:O(logN)
- 空间复杂度:O(1)