gpt4 book ai didi

r - 如何创建一个返回向量中前 N 个质数的循环?

转载 作者:行者123 更新时间:2023-12-04 15:46:50 26 4
gpt4 key购买 nike

我已经尝试了一段时间来编写一个有两个参数的函数。一个整数 = n,另一个是逻辑参数。如果逻辑参数为真,我将如何编写一个函数返回向量中的前 n 个质数,如果逻辑参数为假,则返回第 n 个质数?

这就是我所了解的。

getprime <- function(n=0 , all=TRUE) {
if (n<=0) {
print("Not a valid number")

} else if (n>0) {
for (primen in 1:n) {
while (n %% 2:(n-1) == 0) {
n=n+1
print(n)
}
}
}
print(n)
}

需要显示的结果如下所示。

> genprime(7, all=TRUE)
[1] 2 3 5 7 11 13 17
> genprime(7, all=FALSE)
[1] 17

最佳答案

您可以编写一个递归函数(一个调用自身的函数)。除了 nall 这两个参数之外,它还需要一个计数器 i 和一个(空)质数向量 素数

只要找到的质数个数小于n,函数就会调用自己,每次调用自己,都会增加计数器变量i .如果 i 是质数,它会被添加到 primes 向量中。

get_prime <- function(n, all = TRUE, i = 1, primes = c()){
if ( n <= 0) {
stop("Not a valid number")
}

if (length(primes) < n) {
if (i == 2L || all(i %% 2L:ceiling(sqrt(i)) != 0)) {
get_prime(n, all = all, i = i + 1, primes = c(primes, i))
} else {
get_prime(n, all = all, i = i + 1, primes = primes)
}
} else {
if (all) {
return(primes)
} else {
return(tail(primes, 1))
}
}
}

结果是:

get_prime(7, TRUE)
[1] 2 3 5 7 11 13 17
get_prime(7, FALSE)
[1] 17

关于r - 如何创建一个返回向量中前 N 个质数的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55399824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com