不理解代码来测试数字是否为素数

时间:2015-11-28 20:33:21

标签: 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++)  
    {  
      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循环的东西,我不理解。

3 个答案:

答案 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。