我需要创建一个包含前100个质数的数组,这是我的代码:
var premier= [];
var nombre= premier.length;
function isPrime(n)
{
if(n < 2)
{
return false;
}
for(i=2; i<Math.sqrt(n); i++)
{
if(n%i===0)
{
return false;
}
}
return true
};
while(nombre<100)
{
var j=2
if(isPrime(j)==true)
{
premier.push(j);
}
j=j+1
}
我是Java语言的初学者,但是我已经测试过
isPrime
函数,即使对于较大的数字,它也可以正常工作。但是当我运行程序时,我有:
严重错误:JS分配失败-内存不足
我认为这部分是错误的:
while(nombre<100)
{
var j=2
if(isPrime(j)=true)
{
premier.push(j);
}
j=j+1
}
console.log(premier)
但我不知道为什么
最佳答案
每次循环运行时,您都反复设置j=2
,并且您永远不会更改nombre
,因此循环永远不会结束。请注意,JavaScript通过值而不是通过引用设置文字值,因此nombre = premier.length
不会神奇地更新。
此外,格式为if( x = true)
的语句会将x
设置为true,然后自动传递条件。在这种情况下,由于x
是函数调用,因此它是无效的语法。
你是这个意思吗
var j = 2;
while(premier.length < 100) {
if( isPrime(j)) premier.push(j);
j++;
}