题目
丑数 就是只包含质因数
2、3和5的正整数。
输入: n = 6
输出: true
题解
第一种
我们在函数接受一个参数n,n参数表示我们要判断的数,接下来我们进行判断如果n小于等于0,如果满足条件我们则直接返回false,接下来我们声明一个变量number,该变量的值为2乘以3乘以5,该值是2、3、5的最小公倍数,然后我们使用循环,我们先检查n是否能被number整除,如果能我们则除以number,因为number包含了所有的2、3、5因数,所以除以number后n中就不再包含2、3、5因数了,然后我们将number的值改为2乘以3的值,然后我们在使用循环判断当前n参数是否除以number是否等于0,如果等于0我们则把number变量改为2乘以5以及3乘以5这些值,最后我们判断n是否等于1,如果等于1,说明n只包含2、3、5这三个质因数,我们则返回true否则我们则返回false即可
var isUgly = function(n) {
if(n <= 0) return false;
let number = 2 * 3 * 5;
while(n % number === 0) n /= number;
number = 2 * 3;
while(n % number === 0) n /= number;
number = 2 * 5;
while(n % number === 0) n /= number;
number = 3 * 5;
while(n % number === 0) n /= number;
while(n % 2 === 0) n /= 2;
while(n % 3 === 0) n /= 3;
while(n % 5 === 0) n /= 5;
return n === 1;
};
第二种
在函数中我们接受一个参数n,我们首先声明了两个变量p和num,p表示是否继续进行循环,num表示当前需要判断的数,设定初始值为n,然后考虑n等于1、0、-1的几种情况,如果等于1我们则直接返回true,如果等于0或-1我们则返回false,接下来我们使用while循环,进行判断num是否能够被2、3、5整除,如果能被2整除我们则将num除以2,如果能被3整除我们则将num除以3,如果能被5整除我们则将num除以5,如果num不能被2、3、5整除,则说明num不是丑数,我们就将p设为false,跳出循环即可,最后我们判断当前num是否等于1,如果等于1则说明n只包含2、3、5这三个质因数我们则返回true否则返回false即可
var isUgly = function(n) {
let p = true,
num = n;
if(n === 1){ return true}
if(n === 0 ||n === -1){return false}
while(p){
if(num%2 === 0){
num = num/2;
}else if(num%3 === 0){
num = num/3
}else if(num%5 === 0){
num = num/5
}else{
p = false;
}
}
if(num === 1){
return true;
}else{
return false;
}
};
坚持努力,无惧未来!