要求:
studID <- 2017110000 set.seed(studID) n <- 10000 num <- sample(n, 1:100000, replace=TRUE)编写函数,将其命名为 findPrime,可以用来查验以上 num物件中质数的数量, 并由大到小进行排序,返回前第 17,153,2349 个质数(注意:函数要同时能返回 质数的数量和第 17,153,2349 个质数质数的物件。
我不太懂要怎么求这样集合中的质数,在网上经过搜索,大致写了这样两种,但他们的结果感觉都不对。。。求助应该要怎么做呀??
【第一种】发现这样出来的结果不是质数。。。
studID <- 2017110000
set.seed(studID)
n <- 10000
num <- sample(size=n,1:100000,replace=TRUE)
findPrime <- function(num){
p <- 2:num
i <- 1
while(p<=sqrt(num)){
p<-p[p%%p!=0|p==p]
i<-i+1
}
a <- sort(p[length(p):0],decreasing=TRUE)
out <- list(length(p),c(a[17],a[153],a[2349]))
return(out)
}
findPrime(num)
【第二种】发现这样也不全是质数。。。
studID <- 2017110000
set.seed(studID)
n <- 10000
num <- sample(size=n,1:100000,replace=TRUE)
findPrime <- function(num){
out <- NULL
for(i in 2:num){
for(j in 2:(i-1)){
if(i%%j==0){
break
}
else if((i%%j!=0)&(j==(i-1))){
out <- c(out,num)
a <- sort(out,decreasing=TRUE)
}
}
}
return(list(length(out),c(a[17],a[153],a[2349])))
}
findPrime(num)