Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不理解测试数字是否为素数的代码_Javascript_Primes - Fatal编程技术网

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;  
      }  

}