【发布时间】:2021-05-05 14:51:15
【问题描述】:
目标是确定一个数是否是汉明数?!众所周知,汉明数是一个仅包含 2、3 和 5 作为因数的数。这意味着一个数字不能包含任何大于 5 的素数!所以我创建了一个函数 isPrimeNumber 来确定一个数字是否是素数,然后我创建了一个函数来确定一个数字是否包含因子 2、3 和 5?!
function isPrimeNumber(n){
if(n===1){
return true;
}else if((n%1!==0)||(n<=0)){
return false;
}else{
for (var i=2; i<n; i++){
if (n%i===0)
return false;
}
return true;
}
}
function isHamming(n){
if(((n%2===0)||(n%3===0)||(n%5===0))){
return true;
}else if((isPrimeNumber(n)===true)&&(n>=7)){
return false;
}else{
return false;
}
}
想要结合这两个函数来确定输入的数字是否是汉明数?!
【问题讨论】:
-
你真的需要质数检查吗?听起来您可以检查第一个条件,然后在任何其他数字上返回 false:
return n%2 === 0 || n%3 === 3 || n%5 === 0 -
-4是根据您的实现的汉明数。但是,我认为不是。 -
我必须添加 n 必须为正 (n>0) 的条件。谢谢!
-
我必须添加检查一个数字是否是大于或等于 7 的素数,因为所有其他因素都包含在 n 必须被 2、3 或 5 整除的条件内,并且不能被任何大于 5 的素数整除。
-
@IvanVrzogic Hamming numbers 采用
2^i * 3^j * 5^k的形式,其中i,j,k >= 0。所以@guidot 答案中的最后一个要点将是正确的解决方案。
标签: javascript function for-loop hamming-numbers