Как получить сумму кратную 5

avatar
J Chava
8 августа 2021 в 21:01
77
2
3

Создайте функцию, которая показывает только сумму целых чисел, также числа, кратные 5, находящиеся в диапазоне 1,n.

До сих пор я дошел до того, что функция показывает мне значения, которые соответствуют вышеупомянутым критериям, но все, что я понимаю, это логические значения. Не уверен, что нужно изменить их на значения, чтобы получить сумму.

Вот что у меня есть:

sumnumbers <- function(n) {
  multiples.5 <- c(1:n)
  return(multiples.5 %% 5== 0)
}  
  
sumnumbers (n = 15)

И вот что я получаю:

[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE

С другой стороны, если я изменю код и добавлю сумму к функции, я получу только количество случаев, когда критерии удовлетворяются. Пример:

sumanumbers <- function(n) {
  multiples.5 <- c(1:n)
  return(sum(multiples.5 %% 5== 0))
}  
  
sumatoria (n = 15)

Я получаю 3, когда n = 15.

Источник
akrun
8 августа 2021 в 21:03
1

Вам нужно multiples.5 <- c(1:n); i1 <- multiples.5 %% 5== 0; return(sum(multiples.5[i1]))

Ответы (2)

avatar
MOHAMMED
8 августа 2021 в 23:13
1
sumnumbers <- function(n) {
  multiples.5 <- c(1:n)
  return(sum(multiples.5[multiples.5 %% 5== 0]))
}  

sumnumbers (n = 15)

multiples.5 %% 5== 0 даст вам логический вектор True False. Вы можете использовать его для определения местоположения кратных 5 в c(1,n). Таким образом, multiples.5[multiples.5 %% 5== 0] будет извлекать только числа, кратные 5, чтобы их можно было суммировать.

J Chava
9 августа 2021 в 14:00
0

Спасибо за ответы. Попробую и посмотрим, как пойдет.

avatar
ThomasIsCoding
8 августа 2021 в 21:28
2

Вы можете попробовать

sumnumbers <- function(n) sum(seq(0, n, 5))

или

sumanumbers <- function(n) sum(which(seq(n) %% 5 == 0))