首页 > 解决方案 > 使用循环 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")
  }
}

标签: rloops

解决方案


你可以这样做-

check_prime <- function(num) {
    if (num == 2) {
        TRUE
    } else if (any(num %% 2:(num-1) == 0)) {
        FALSE
    } else { 
        TRUE
    }
}

> check_prime(7)
[1] TRUE

推荐阅读