Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情
题目描述
给你一个整数 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, 3, 5 的正整数,那么小于0的数字都不是丑数;计算时,我们可以用 n 一直除以2,3,5,直到不能再整除2,3,5中的任何一个数,若剩下的数等于1,那么,则说明 n 只含有2,3,5质因数,没有其他的质因数,n 就是丑数;若剩下的数是其他数字,那么 n 就有其他数字的质因数, n 不是丑数。还有一个特殊的例外,1也是丑数。
AC代码
let num = 14;
function isUglilyNum(n) {
if(n <= 0) {
return false;
}
const nums = [2, 3, 5];
nums.forEach( item => {
while(n % item == 0) {
n /= item;
}
})
return n == 1;
}
console.log(isUglilyNum(num))
总结
这是一个简单的计算质数算法,主要在于循环除以2, 3, 5,然后在加以判断就可以了;复杂类型属于简单的;这道算法题还有很多种解法,这里只是给出了一个简单的解决方法(出自力扣)。