#r
#r
Вопрос:
Я хотел бы найти число простого числа ниже 1000 с помощью Rstudio. Ранее я написал функцию ( is.prime
которая сообщает нам, является ли число простым или нет ( TRUE
или FALSE
)), и теперь я хотел бы написать какую-нибудь строку, чтобы найти число простого числа ниже 1000. Ниже то, что я нашел, но это не работает:
k=0
for(i in 1:1000){
if(is.prime(i)==TRUE){
k=k 1
}
}
Если у кого-то есть идея, я был бы очень признателен.
Комментарии:
1. Первым шагом было бы исправить синтаксическую ошибку (неправильное положение
)
) вif
конструкции.2. Что вы подразумеваете под «не работает»? Вы получаете сообщение об ошибке? Предупреждение? Неправильный ответ? (откуда вы знаете, что это неправильно?) Теперь, когда синтаксическая ошибка исправлена, как вы думаете, проблема в вашем цикле или в
is.prime
?3. Я хочу, чтобы функция возвращала число простых чисел ниже 1000, но возникает ошибка с «==»
4. Можете ли вы опубликовать фактический текст ошибки? Отредактируйте это в своем вопросе. Если
is.prime
всегда возвращаетсяTRUE
илиFALSE
, то вам не должно понадобиться== TRUE
, потому чтоif(TRUE)
это то же самое, чтоif(TRUE == TRUE)
, но его наличие ничему не повредит. Я бы рекомендовал внутри цикла, передif()
, добавить несколько операторов печати:print(i)
иprint(is.prime(i))
. Это поможет вам найти проблему.5.
k <- 0; for(i in 1:1000) k <- k is.prime(i)
Илиsum(sapply(1:1000, is.prime))
.
Ответ №1:
Этот вопрос немного странный (это второй по той же проблеме), и я постараюсь помочь вам, не предоставляя никакого функционального кода. Как?
Сначала нам нужно спланировать шаги по решению проблемы:
-
Нам нужно создать функцию в R, которая возвращает, является ли вводимое простое число или нет.
is_prime = function(my_number) { # Logic behind prime numbers # A prime number (or a prime) is a natural number greater than 1 that cannot be formed by multiplying two smaller natural numbers. (wiki) }
Функция is_prime должна возвращать логическое значение (или массив, основанный на входных данных)
-
Нам нужно отфильтровать простые числа.
number_sequence = 1:1000 # it's an array is_prime_vector = is_prime(number_sequence) # so, the function will return an array too. prime_numbers = number_sequence[is_prime_vector]
Я надеюсь, что это может вам помочь.