我在网上找到了这个代码。这不是我自己的。这是一个测试给定数字是否为素数的函数。该代码用于确定数字是否为素数。我只是不明白它是如何运作的。
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));
第一个if和else if语句对我有意义。如果n等于1,则返回false,即1不是素数。否则如果n等于2则返回true,因为2是素数。
else语句中的所有内容对我都没有意义。如果你调用函数测试25,这不是素数,25%x,x = 2,等于1.那么为什么函数会返回false?
我知道有一些关于for循环的东西,我不理解。
答案 0 :(得分:6)
如果n
既不是1也不是2,那么请取2和n
之间的数字范围,并检查n
是否可被任何这些数字整除。如果是,那么它不是素数,所以你返回false。如果范围中没有数字除n
,则n
必须为素数。
答案 1 :(得分:3)
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;
}
答案 2 :(得分:2)
for(var x = 2; x < n; x++)
{
if(n % x === 0)
{
return false;
}
}
我想你会看到这个:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
x的值介于2和n-1之间。当你处于循环中时,x的值正在改变:首先x = 1,然后x = 2,后来x = 3 ......当x = 5时,条件为真,然后返回false。