Javascript 不理解测试数字是否为素数的代码
我在网上找到了这个代码。这不是我自己的。这是一个测试给定数字是否为素数的函数。该代码用于确定一个数字是否为素数。我只是不明白它是怎么工作的Javascript 不理解测试数字是否为素数的代码,javascript,primes,Javascript,Primes,我在网上找到了这个代码。这不是我自己的。这是一个测试给定数字是否为素数的函数。该代码用于确定一个数字是否为素数。我只是不明白它是怎么工作的 function test_prime(n) { if (n===1) { return false; } else if(n === 2) { return true; }else { for(var x = 2; x < n; x++) {
function test_prime(n)
{
if (n===1)
{
return false;
}
else if(n === 2)
{
return true;
}else
{
for(var x = 2; x < n; x++)
{
if(n % x === 0)
{
return false;
}
}
return true;
}
}
alert(test_prime(25));
功能测试\u素数(n)
{
如果(n==1)
{
返回false;
}
else if(n==2)
{
返回true;
}否则
{
对于(变量x=2;x
第一个if和else if语句对我来说很有意义。如果n等于1,则返回false,因为1不是素数。否则,如果n等于2,则返回true,因为2是素数
else语句中的所有内容对我来说都没有意义。如果调用25的函数测试,它不是质数,那么25%x,x=2,等于1。那么为什么函数返回false呢
我知道for循环中有一些我不理解的地方。如果
n
既不是1也不是2,那么取2到n
之间的数字范围,检查n
是否可以被这些数字中的任何一个整除。如果是,那么它不是素数,所以返回false。如果范围内的数字都不除n
,则n
必须为素数。else块说明
else
{
for(var x = 2; x < n; x++) // Iterating over possible divisors i.e number - 1
{
if(n % x === 0) // Checking whether the number is divisible by any number, if it is then return false i.e. number is not a prime number
{
return false;
}
}
// If the number is not divisible by any number return true
return true;
}
else
{
对于(var x=2;x
用于(变量x=2;x
我想你会这样看:
x的值介于2和n-1之间。当您在循环中时,x的值正在变化:首先x=1,然后x=2,然后x=3。。。当x=5时,条件为true,然后返回false。对于x=2,如果n=25,函数不会返回false。循环将继续增加x直到x=5,此时它将发现n可被x整除,然后返回false。还要注意的是,这个函数的效率非常低。当然是重复的。。。for循环代码将一直运行,直到x小于n。。。出于某种原因,我认为For循环在第一次运行后就结束了。谢谢
for(var x = 2; x < n; x++)
{
if(n % x === 0)
{
return false;
}
}