猿问
下载APP

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

如何找到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());


qq_笑_17
浏览 41回答 3
3回答

皈依舞

下面是一个JavaScript中的筛子实现的例子:function&nbsp;getPrimes(max)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sieve&nbsp;=&nbsp;[],&nbsp;i,&nbsp;j,&nbsp;primes&nbsp;=&nbsp;[]; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;2;&nbsp;i&nbsp;<=&nbsp;max;&nbsp;++i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!sieve[i])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;i&nbsp;has&nbsp;not&nbsp;been&nbsp;marked&nbsp;--&nbsp;it&nbsp;is&nbsp;prime &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primes.push(i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;i&nbsp;<<&nbsp;1;&nbsp;j&nbsp;<=&nbsp;max;&nbsp;j&nbsp;+=&nbsp;i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sieve[j]&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;primes;}然后getPrimes(100)将返回2到100之间的所有素数数组(包括在内)。当然,由于内存限制,不能在大参数中使用。Java实现看起来非常类似。

牧羊人nacy

我就是这样解决的。将它从Java重写为JavaScript,所以如果出现语法错误,请原谅。function&nbsp;isPrime&nbsp;(n){ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(n&nbsp;<&nbsp;2)&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;An&nbsp;integer&nbsp;is&nbsp;prime&nbsp;if&nbsp;it&nbsp;is&nbsp;not&nbsp;divisible&nbsp;by&nbsp;any&nbsp;prime&nbsp;less&nbsp;than&nbsp;or&nbsp;equal&nbsp;to&nbsp;its&nbsp;square&nbsp;root &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**/ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;q&nbsp;=&nbsp;Math.floor(Math.sqrt(n)); &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;2;&nbsp;i&nbsp;<=&nbsp;q;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(n&nbsp;%&nbsp;i&nbsp;==&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;}一个数字,n,是一个素数,如果它不能被除1和它本身以外的任何其他数整除的话。另外,检查数字[2,sqrt(N)]就足够了。

慕码人2483693

下面是这个脚本的现场演示:http://jsfiddle.net/K2QJp/首先,创建一个函数来测试单个数字是否为素数。如果您想要扩展Number对象,您可以这样做,但是我决定尽量保持代码的简单性。function&nbsp;isPrime(num)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if(num&nbsp;<&nbsp;2)&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;2;&nbsp;i&nbsp;<&nbsp;num;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(num%i==0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;}此脚本遍历比数字少2到1之间的每一个数字,并测试如果将数字除以增量,是否有任何没有余数的数字。如果没有余数的话,它就不是素数。如果数字小于2,则它不是素数。否则,它就是黄金。然后使一个for循环遍历数字0到100,并使用该函数测试每个数字。如果是素数,则将数字输出到日志中。for(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;100;&nbsp;i++){ &nbsp;&nbsp;&nbsp;&nbsp;if(isPrime(i))&nbsp;console.log(i);}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答