我们知道,质数是一个大于1的自然数,除了1和它自己以外没有正的约数。写一个R函数prime(n),找出所有小于或等于n的质数。你可以使用任何算法来寻找质数。这个程序应该怎么写啊
数据集不大的话用简单高效的优化朴素算法
isprime <- function(num){
num = as.integer(num)
if (num == 1 || num == 0){return(NULL)}
SqrtN = sqrt(num)
for (i in seq(2,SqrtN)){ if ( (num %% i) == 0) {return(NULL)} }
return(num)
}
unlist(lapply(1:100, function(x) isprime(x)))
CalcPrimeNum <- function(max_num){
if(!(max_num>1&round(max_num)==max_num)){
return('传参错误')
}
prime_count <- 0
for(i in 2:max_num){
fac_count<-0
for(j in 1:i){
if(i%%j==0){
fac_count <- fac_count+1
}
}
if(fac_count==2){
prime_count <- prime_count+1
}#嵌套内循环,判断i是否为质数,如果是质数,计数变量值+1
}#遍历1到n的外循环
return(prime_count)
}