为了账号安全,请及时绑定邮箱和手机立即绑定

如何找到0到100之间的素数?

如何找到0到100之间的素数?

ITMISS 2019-07-13 10:04:17
如何找到0到100之间的素数?在Javascript中,如何找到0到100之间的素数?我想过了,我不知道怎么找到他们。我想做x%x,但我发现了一个明显的问题。到目前为止,这就是我所拥有的:但不幸的是,这是有史以来最糟糕的代码。var prime = function (){var num;for (num = 0; num < 101; num++){     if (num % 2 === 0){         break;     }     else if (num % 3 === 0){         break;     }     else if (num % 4=== 0){         break;     }     else if (num % 5 === 0){         break;     }     else if (num % 6 === 0){         break;     }     else if (num % 7 === 0){         break;     }     else if (num % 8 === 0){         break;     }     else if (num % 9 === 0){         break;     }     else if (num % 10 === 0){         break;     }     else if (num % 11 === 0){         break;     }     else if (num % 12 === 0){         break;     }     else {         return num;     }}};console.log(prime());
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

下面是一个JavaScript中的筛子实现的例子:

function getPrimes(max) {
    var sieve = [], i, j, primes = [];
    for (i = 2; i <= max; ++i) {
        if (!sieve[i]) {
            // i has not been marked -- it is prime
            primes.push(i);
            for (j = i << 1; j <= max; j += i) {
                sieve[j] = true;
            }
        }
    }
    return primes;}

然后getPrimes(100)将返回2到100之间的所有素数数组(包括在内)。当然,由于内存限制,不能在大参数中使用。

Java实现看起来非常类似。


查看完整回答
反对 回复 2019-07-13
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我就是这样解决的。将它从Java重写为JavaScript,所以如果出现语法错误,请原谅。

function isPrime (n){
    if (n < 2) return false;

    /**
     * An integer is prime if it is not divisible by any prime less than or equal to its square root
     **/

    var q = Math.floor(Math.sqrt(n));

    for (var i = 2; i <= q; i++)
    {
        if (n % i == 0)
        {
            return false;
        }
    }

    return true;}

一个数字,n,是一个素数,如果它不能被除1和它本身以外的任何其他数整除的话。另外,检查数字[2,sqrt(N)]就足够了。


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 827 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信