R语言,解释下这code

学习 时间:2026-04-02 07:57:56 阅读:8650
R语言,解释下这code>Eratosthenes 2) {+ sieve

最佳回答

笨笨的短靴

土豪的哈密瓜

2026-04-02 07:57:56

if (any(sieve ==i)) { # 如果i在sieve里 也可以写成 if ( i %in% sieve ) {  primes <- c(primes, i)   # 把i放到prime里  sieve <- c(sieve[(seive %% i) != 0], i)  #把所有sieve里i的整数倍数(除了i)取走  # %%是mod, 余数,所以 sieve[seive%%i) !=0]是所有seive里除以i余数不为0的数} 整个这段代码是找出所有比n小的质数 再问: 还是很混乱。。。能说下这个logic或者流程是怎样的吗 再答: ok,理解的关键是sieve里的值随着循环是一个越来越少,第一个循环,n=2,primes = c(2), sieve <- 之后,所以2的倍数都被移走,但是把i留下(这一句其实有错误,i不需要了,因为已经在primes里了)可以改成 sieve <- c(sieve[(seive %% i) != 0])第二个循环,i=3,i还在sieve里,所以这一次把3的倍数都移走了。第三步,i=4,i不再在sieve里了(第一步的时候4是2的倍数已经被移走了)。。。

最新回答共有2条回答

  • 大方的睫毛
    回复
    2026-04-02 07:57:56

    if (any(sieve ==i)) { # 如果i在sieve里 也可以写成 if ( i %in% sieve ) {  primes <- c(primes, i)   # 把i放到prime里  sieve <- c(sieve[(seive %% i) != 0], i)  #把所有sieve里i的整数倍数(除了i)取走  # %%是mod, 余数,所以 sieve[seive%%i) !=0]是所有seive里除以i余数不为0的数} 整个这段代码是找出所有比n小的质数 再问: 还是很混乱。。。能说下这个logic或者流程是怎样的吗 再答: ok,理解的关键是sieve里的值随着循环是一个越来越少,第一个循环,n=2,primes = c(2), sieve <- 之后,所以2的倍数都被移走,但是把i留下(这一句其实有错误,i不需要了,因为已经在primes里了)可以改成 sieve <- c(sieve[(seive %% i) != 0])第二个循环,i=3,i还在sieve里,所以这一次把3的倍数都移走了。第三步,i=4,i不再在sieve里了(第一步的时候4是2的倍数已经被移走了)。。。

上一篇 Always keep your position, this time, I'm waiting for you

下一篇 我最喜欢的植物(说明文)