丑数

108 阅读1分钟

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,然后在加以判断就可以了;复杂类型属于简单的;这道算法题还有很多种解法,这里只是给出了一个简单的解决方法(出自力扣)。