r - 使用循环 1 测试素数:sqrt(x)
问题描述
我正在学习循环,我有这个代码来检查一个数字是否是素数,但它不起作用。错误在哪里?
x <- 7
y <- seq(1,sqrt(x),by=1)
for(i in 1: sqrt(x)){
if(y[x%%y == 0]) {
print("FALSE")
}else{
print("TRUE")
}
}
这给了我正确的解决方案,但它重复答案的次数与 i 中的元素数量一样多。另外我想问一下如何在for中使用函数if:
i <- c(1: sqrt(x))
y3 <- x%%i == 0
y4 <- y3[-1]
for(value in i){
if(y4 == FALSE) {
print("TRUE")
}else{
print("FALSE")
}
}
版本 3,为我提供了解决方案,但对于 i 中的每个元素:
x <- 107
i <- c(1: sqrt(x))
y3 <- c(x%%i == 0)
y4 <- y3[-1]
for(value in i){
if(all(y4==F)) {
print("TRUE")
}else{
print("FALSE")
}
}
解决方案
你可以这样做-
check_prime <- function(num) {
if (num == 2) {
TRUE
} else if (any(num %% 2:(num-1) == 0)) {
FALSE
} else {
TRUE
}
}
> check_prime(7)
[1] TRUE
推荐阅读
- r - 如何在 R Studio 中关闭默认笔记本
- python - 使用 csv 文件在 python 代码中生成 if 条件?
- json - 使用 jq 从 JSON 中提取 URL
- python - Tensorflow图构建输入类型不匹配错误
- c# - 创建增量构建时出现 CS0246 错误
- karate - 如何在空手道中创建深层副本
- django - 如何使用 Celery 和 Django 将任务路由到不同的队列
- sapui5 - SAPUI5过滤栏获取过滤栏中每个过滤项的过滤值
- java - 在 eclipse 中设置 Geoserver Github 代码
- ejabberd - Ejabberd 版本 17.11 - 收到“失败的 c2s PLAIN 身份验证”错误消息