我需要有一个函数,如果输入的数字是质数,它必须向上舍入到下一个质数,如果不是向下舍入到前一个质数。
我有这个代码来识别它是否是质数:
prime <- function(x) {
if (x == 2) {
print(3)
} else if (any(x %% 2:(x-1) == 0)) {
FALSE
} else {
TRUE
}
}我想向true和false添加一个while循环,如果函数为false,则必须减1,直到为true;如果为true,则必须添加1,直到再次为true,但我不确定如何执行此操作。
发布于 2019-03-27 19:33:18
用你的素数检验器,
prime <- function(x) {
if (x == 2) {
print(3)
} else if (any(x %% 2:(x-1) == 0)) {
FALSE
} else {
TRUE
}
}我们构建new函数,我们首先检查我们的数字是否是质数,如果是,加1,直到我们到达下一个质数。如果它不是素数,我们减1直到它是素数。
new <- function(x){
if (isTRUE(prime(x))){
x = x+1
while(prime(x) == FALSE){
x = x+1
}
return(x)
} else {
while(prime(x) == FALSE){
x = x-1
}
return(x)
}
}我们会得到
> new(7)
[1] 11
> new(10)
[1] 7https://stackoverflow.com/questions/55375987
复制相似问题