我试图找到前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
答案 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]