i <- 2
j <- 0
for (i in 2:1000) {
if(return.prime(i)){j = j + 1}
i = i + 1
}
Я хочу проверить, сколько простых чисел существует от 1 до 1000, используя мою собственную функцию return.prime
, которая возвращает TRUE, когда ввод числа простое, и FALSE, если ввод числа не прост. Функция return.prime
- это приведенная ниже функция, и она правильная.
return.prime <- function(d){
if(d ==1 ){print(FALSE)}
if (d == 2){
print(TRUE)
}
if(d !=2 && d!=1){
if(any(d %% (2:(d-1)) == rep(0,d-2))==TRUE){
print(FALSE)}
else
print(TRUE)
}
}
Проблема в том, что когда я запускаю свою программу, она говорит:
[1] TRUE
Error in if (return.prime(i)) { : argument is of length zero
Я не знаю, что вызывает нулевую длину.