使用R找到n个素数

时间:2014-07-28 14:31:58

标签: r

我试图找到前n个素数。我写了以下函数,但我没有得到正确的输出。我刚开始使用R,所以请忽略编程风格。 :(

 function(n){
      primeList<- numeric(0)
      j <- 1
      while(j < n){
        for(i in 1:n){
          if (isprime(i)==2){
            primeList[j]<- i
            print(primeList[j])
            j <- j + 1                  
          }

        }                     
      }

    }

输出: 如果我需要10个素数......节目的输出是:

[1] 2
[1] 3
[1] 5
[1] 7
[1] 2
[1] 3
[1] 5
[1] 7
[1] 2
[1] 3
[1] 5
[1] 7

1 个答案:

答案 0 :(得分:4)

问题是for(i in 1:n)表示只检查前十个数字(即1:10)。没有理由拥有for(i in 1:n),它应该是:

while(j < n)
{
    if (isprime(i)==2) ## This is kinda misleading - should return TRUE/FALSE right?
    {
        primeList[j] = i
        j = j + 1
    }
}

但更重要的是,isprime的文档(我建议阅读它)有更好的方法来做你正在做的事情:

# All primes numbers from 1 to 100
t <- isprime(1:99)
(1:99)[t > 0]