试图编写代码列出最多n个素数

时间:2016-02-29 19:03:44

标签: r primes

我不是R中最好的,但必须编写代码,列出所有素数高达10,000。早些时候我们不得不计算一个数字是否是素数,我按他们这样的方式做了这个:

n <- 4
prime <- TRUE

for (i in 2:floor(n^0.5)){
  if(n %% i == 0) {prime <- FALSE} 
  if(n == 2) {prime <- TRUE}
  if(n == 3) {prime <- TRUE}
}

prime

但是我的代码将它们添加到一个列表中,虽然它应该在我有点不合逻辑的思想中做的但是不起作用...

pvec<-c(2,3)
prime<- TRUE

for (i in 4:100){
  for (y in 2:i-1){
    if (i %% y == 0) {prime <- FALSE} 
    if (prime == FALSE) break
    else{pvec<- c(pvec, i)}
  }
}

pvec
prime

非常感谢任何帮助。 (另外,我知道必须有其他方法,但我之后的方式必须以某种方式链接到第一个主要测试部分。)

1 个答案:

答案 0 :(得分:1)

将您的流程包裹在一个功能中。然后使用sapply或for循环进行迭代。还要考虑对代码进行矢量化以消除对循环的需求:

prime_func <- function(n) {

prime <- TRUE

for (i in 2:floor(n^0.5)){
  if(n %% i == 0) {prime <- FALSE} 
  if(n == 2) {prime <- TRUE}
  if(n == 3) {prime <- TRUE}
}

prime

}

pvec<-c(2,3)
sapply(pvec, prime_func)
#[1] TRUE TRUE