количество простых чисел меньше 1000 в Rstudio

#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:

Этот вопрос немного странный (это второй по той же проблеме), и я постараюсь помочь вам, не предоставляя никакого функционального кода. Как?

Сначала нам нужно спланировать шаги по решению проблемы:

  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 должна возвращать логическое значение (или массив, основанный на входных данных)

  1. Нам нужно отфильтровать простые числа.

     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]
      

Я надеюсь, что это может вам помочь.