相关疑难解决方法(0)

最优雅的方式来生成素数

实现此功能的最佳方式是什么:

ArrayList generatePrimes(int n)
Run Code Online (Sandbox Code Playgroud)

此函数生成第一个n素数(编辑:where n>1),因此generatePrimes(5)将返回ArrayListwith {2, 3, 5, 7, 11}.(我在C#中这样做,但我很高兴Java实现 - 或任何其他类似的语言(所以不是Haskell)).

我知道怎么写这个函数,但是当我昨晚做到这一点时,它并没有像我希望的那样结束.这是我想出的:

ArrayList generatePrimes(int toGenerate)
{
    ArrayList primes = new ArrayList();
    primes.Add(2);
    primes.Add(3);
    while (primes.Count < toGenerate)
    {
        int nextPrime = (int)(primes[primes.Count - 1]) + 2;
        while (true)
        {
            bool isPrime = true;
            foreach (int n in primes)
            {
                if (nextPrime % n == 0)
                {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime)
            {
                break;
            }
            else
            {
                nextPrime …
Run Code Online (Sandbox Code Playgroud)

c# java algorithm primes

81
推荐指数
7
解决办法
6万
查看次数

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

我在网上找到了这个代码.这不是我自己的.这是一个测试给定数字是否为素数的函数.该代码用于确定数字是否为素数.我只是不明白它是如何工作的.

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)); 
Run Code Online (Sandbox Code Playgroud)

第一个if和else if语句对我有意义.如果n等于1,则返回false,即1不是素数.否则,如果n等于2,则返回true,因为2是素数.

else语句中的所有内容对我来说都没有意义.如果你调用函数测试25,这不是素数,25%x,x = 2,等于1.那么为什么函数会返回false?

我知道有一些关于for循环我不理解.

javascript primes

2
推荐指数
1
解决办法
269
查看次数

标签 统计

primes ×2

algorithm ×1

c# ×1

java ×1

javascript ×1