-1

目标是确定一个数字是否是汉明数?!众所周知,汉明数是一个仅包含 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;
    }
}

想结合这两个函数来确定输入的数字是否是汉明数?!

4

1 回答 1

0
  • 在给定的实现中,素数检查没有贡献任何有用的东西并且具有可怕的时间复杂度 O(n)。
  • 仅仅证明这个数字是 2、3 或 5 的倍数是不够的。还必须证明不包含其他因素。(示例:14 不是素数,包含因数 2 但也包含 7 -> 没有汉明数)
  • 我认为除了以下内容别无选择:您必须依次除以 2、3 和 5(只要包含每个因子),然后查看是否达到 1。
于 2021-02-01T12:38:16.210 回答