以下是用R语言编写的函数实现对于任意给定的一个数n,找出1 到n 之间的所有质数:

prime_numbers <- function(n) {
  primes <- c()
  for (i in 2:n) {
    if (all(i %% primes != 0)) {
      primes <- c(primes, i)
    }
  }
  return(primes)
}

解释:

  1. 定义一个空向量 primes 来存储找到的质数。

  2. 从 2 开始遍历到 n,依次判断每个数是否为质数。

  3. 如果某个数 i 能够整除已经找到的质数,那么它一定不是质数,跳过该数。

  4. 如果某个数 i 不能够整除已经找到的质数,那么它可能是质数,将其加入 primes 中。

  5. 遍历结束后,返回找到的所有质数。

注意:

  1. 在判断一个数是否为质数时,我们只需要判断它能否整除比它小的质数即可,因为如果有比它小的非质数能够整除它,那么这个数一定能够整除比它小的某个质数。

  2. 为了减少计算量,我们可以只遍历到 $\sqrt{n}$,因为如果一个数不是质数,那么它一定能够分解成两个因子,其中至少一个小于等于 $\sqrt{n}$。

  3. 在判断一个数 i 能否整除已经找到的质数时,我们使用了 R 语言的 all 函数,它会返回一个布尔值,表示所有元素是否均为 TRUE。如果已经找到的质数中有任意一个数能够整除 i,那么 i %% primes 就会返回一个零元素,否则返回一个非零元素,取反后就是 TRUE。因此,如果 all(i %% primes != 0) 为 TRUE,说明 i 不能够整除任何一个已经找到的质数,即 i 是质数。

R语言实现找出1到n之间的所有质数

原文地址: https://www.cveoy.top/t/topic/n6I1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录