Hat*_*kNZ 11 javascript numbers
有人可以给我指导获得这里的黄金数字吗?这是家庭作业,所以我不想要答案,但一些指针将不胜感激.这真让我讨厌:(
我想我很亲密.但是我遇到的这个问题是25号和35号.这些不是素数,但是这个函数正在返回它们
var getPrimeNumber = function(n) {
if(n === 1) return "";
else if(n == 2) return 2;
else if(n == 3) return 3;
else {
for(i=Math.floor(Math.sqrt(n)); i>=2; i--){
//console.log(i);//maybe another var in here?
if(n%i !==0 && n%2 !==0 && n%3 !== 0)
return n; // 25/Math.sqrt(25) will be equal to zero this is what gives me 25 !!!
}
}
};
Run Code Online (Sandbox Code Playgroud)
Koo*_*Inc 17
基于此页面,这将是一种确定数字是否为素数的方法:
function isPrime(number) {
let start = 2;
const limit = Math.sqrt(number);
while (start <= limit) {
if (number % start++ < 1) return false;
}
return number > 1;
}
Run Code Online (Sandbox Code Playgroud)
在node.js
确定2到100.000之间的素数时需要大约250M.
这是基于之前的素数值计算JavaScript中素数的最快方法.
function nextPrime(value) {
if (value > 2) {
var i, q;
do {
i = 3;
value += 2;
q = Math.floor(Math.sqrt(value));
while (i <= q && value % i) {
i += 2;
}
} while (i <= q);
return value;
}
return value === 2 ? 3 : 2;
}
Run Code Online (Sandbox Code Playgroud)
var value, result = [];
for (var i = 0; i < 10; i++) {
value = nextPrime(value);
result.push(value);
}
console.log("Primes:", result);
Run Code Online (Sandbox Code Playgroud)
Primes: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]
Run Code Online (Sandbox Code Playgroud)
它非常快,因为:
它可以在大约130ms内为您提供前100,000个素数,或者在大约4秒内为您提供前1个素数.
function nextPrime(value) {
if (value > 2) {
var i, q;
do {
i = 3;
value += 2;
q = Math.floor(Math.sqrt(value));
while (i <= q && value % i) {
i += 2;
}
} while (i <= q);
return value;
}
return value === 2 ? 3 : 2;
}
var value, result = [];
for (var i = 0; i < 10; i++) {
value = nextPrime(value);
result.push(value);
}
display("Primes: " + result.join(', '));
function display(msg) {
document.body.insertAdjacentHTML(
"beforeend",
"<p>" + msg + "</p>"
);
}
Run Code Online (Sandbox Code Playgroud)
fat*_*ihk -1
您应该返回一个bool
值,新函数可以是:
function(n) {
if(n === 1) { return false;}
else if(n == 2) { return true;}
else if(n == 3) { return true;}
else {
for(i=Math.floor(Math.sqrt(n));i>=2;i--){
//console.log(i);//maybe another var in here?
if(n%i ==0 || n%2 ==0 || n%3 == 0) {return false;}
}
}
return true;
};
Run Code Online (Sandbox Code Playgroud)
在OP中,控制if(n%i !==0 && n%2 !==0 && n%3 !== 0) {return n;}
是有问题的,因为即使只有singlei
满足这个条件,函数也会将数字返回为素数。
归档时间: |
|
查看次数: |
32223 次 |
最近记录: |