需要在JavaScript中生成质数 [英] Need to generate prime numbers in JavaScript
问题描述
我正在编写JavaScript,以生成2到100的质数.但是,它不起作用,无法弄清楚.
I am writing a JavaScript to generate prime numbers from 2 to 100. However It doesn't work and can't figure it out.
你能帮我吗?
var array = new Array(100);
for (var i=2 ; i<=array.length-1; i++) {
if((i%2===0) || (i%3===0))
continue;
document.writeln(i+",");
}
我修改了答案,但现在不打印2&3;如何包含2&3 ...结果是:
I modified my answer, but now it doesn't print 2 & 3; how can I include 2 & 3... result is :
5、7、11、13、17、19、23、25、29、31、35、37、41、43、47、49、53、55、59、61、65、67,71,73,77,79,83,85,89,91,95,97
推荐答案
function isPrime(num) {
for ( var i = 2; i < num; i++ ) {
if ( num % i === 0 ) {
return false;
}
}
return true;
}
function display(n) {
var arr = [2];
for ( var i = 3; i < n; i+=2 ) {
if ( isPrime(i) ) {
arr.push(i);
}
}
console.log(arr); // use arr result on your own
}
display(100);
注意::在 display 函数中指定 n 参数,并将质数从2变为 n ...
NOTE: Specify n parameter in display function and get the primes from 2 to n ...
签出 JSFiddle
更新:请注意,上面的脚本是正确的,我将其保留,尽管除了添加相同的功能外,还添加了一个功能:
Updateing: Note that the above script is correct and I'm leaving it, though adding the same function with one functionality in addition:
function prime(n,flag) {
( typeof flag === "undefined" || flag === false ) ? flag = false : flag = true;
function isPrime(num) {
if ( num === 0 || num === 1 ) {
return false;
}
for ( var i = 2; i < num; i++ ) {
if ( num % i === 0 ) {
return false;
}
}
return true;
}
if ( flag ) {
var arr = [2];
for ( var i = 3; i <= n; i+=2 ) {
if ( isPrime(i) ) {
arr.push(i);
}
}
return arr;
} else {
return isPrime(n);
}
}
说明: prime
函数需要两个参数,第一个是必需的,第二个是可选的.如果仅指定第一个参数,则函数将根据数字是否为素数返回 true
或 false
.如果将第二个参数指定为 true
(或除 undefined
和 false
以外的任何其他类型),函数将返回以下内容的 array
从 2
到 n
的素数.例如:
Explanation: prime
function expect two parameters, first one is required and the second is optional. If only first parameter is specified function will return true
or false
based on number belongs or not to primes. If second parameter is specified as true
(or any other type except undefined
and false
) function will return array
of primes from 2
to n
. For example:
console.log(prime(2)); // returns true ( 2 is prime )
console.log(prime(8)); // returns false ( 8 isn't prime )
console.log(prime(100,true)); // returns [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
这篇关于需要在JavaScript中生成质数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!