Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
该R如何作用于埃拉托斯烯筛?_R - Fatal编程技术网

该R如何作用于埃拉托斯烯筛?

该R如何作用于埃拉托斯烯筛?,r,R,我刚开始学习R,当时正在看一段代码,它用埃拉托什尼筛找到素数,直到一些数字n: sieve <- function(n) { if (n < 2) return(NULL) a <- rep(T, n) a[1] <- F for(i in seq(n)) { if (a[i]) { j <- i * i if (j > n) return(which(a)) a[seq(j, n, by=i)] &

我刚开始学习R,当时正在看一段代码,它用埃拉托什尼筛找到素数,直到一些数字n:

sieve <- function(n) {
  if (n < 2) return(NULL)
  a <- rep(T, n)
  a[1] <- F
  for(i in seq(n)) {
    if (a[i]) {
      j <- i * i
      if (j > n) return(which(a))
      a[seq(j, n, by=i)] <- F
    }
  }
}

sieve忘记代码——你理解sieve本身的逻辑吗?如果没有,那就是开始的地方(这是一本好书)。代码本身是核心算法的一个相当简单的实现。切向上——使用
T
F
作为
TRUE
FALSE
的缩写被认为是有风险的。请参阅(R Bloggers本身对任何学习R的人来说都是一个很好的资源)。尝试使用
debug(sieve)
,然后使用
sieve(7)
,这样你就可以一次一行地遍历代码(并打印出你感兴趣的任何对象的值)
j中的注释约翰·科尔曼在第一条注释中是正确的;我认为埃拉托什尼的筛子使用了不同的算法,阅读维基百科页面澄清了问题。谢谢你的帮助!忘记代码吧——你理解筛子本身的逻辑吗?如果没有,那就是开始的地方(这是一本好书)。代码本身是核心算法的一个相当简单的实现。切向上——使用
T
F
作为
TRUE
FALSE
的缩写被认为是有风险的。请参阅(R Bloggers本身对任何学习R的人来说都是一个很好的资源)。尝试使用
debug(sieve)
,然后使用
sieve(7)
,这样你就可以一次一行地遍历代码(并打印出你感兴趣的任何对象的值)
j中的注释约翰·科尔曼在第一条注释中是正确的;我认为埃拉托什尼的筛子使用了不同的算法,阅读维基百科页面澄清了问题。谢谢你的帮助!
n=10
sieve <- function(n) {
  if (n < 2) return(NULL) #ignore inputs that don't return anything
  a <- rep(T, n) #TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
  a[1] <- F ##to ignore 1? #FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  for(i in seq(n)) {
    if (a[i]) { #i.e., for all values but 1
      j <- i * i #4 9 16 25...
      if (j > n) return(which(a))
      a[seq(j, n, by=i)] <- F
    }
  }
}