我不是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
非常感谢任何帮助。 (另外,我知道必须有其他方法,但我之后的方式必须以某种方式链接到第一个主要测试部分。)
答案 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