我正在编写一个 JavaScript 来生成从 2 到 100 的素数。但是它不起作用并且无法弄清楚。
你能帮帮我吗?
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...
结果是:
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);
注意:指定 n 中的参数展示函数并获得从 2 到 的素数n ...
查看 JSFiddle
更新:请注意,上面的脚本是正确的,我将离开它,尽管添加了相同的功能和一个功能:
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
.例如: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 - 需要在 JavaScript 中生成素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966000/