给定最大因数的公因数相加

问题描述

问题是:

如何创建具有两个输入的函数,即向量 (v) 和整数 (n)。输出应该是小于或等于给定整数的所有值的 TOTAL 值,该值至少是向量任意一个输入的因子。

我最初是从写作开始的

Integer = function(n){
   n_value = sum(0:n)
   Return(n_value)
}

不过,我不知道这是否让我走上了错误的道路。任何帮助和指导将不胜感激

解决方法

也许你可以试试下面的代码

sum_mult <- function(n,v) sum(seq(n)[rowSums(sapply(v,function(x) seq(n) %% x) == 0) > 0])

这样

> sum_mult(5,c(2,3))
[1] 9

> sum_mult(10,c(3,5))
[1] 33

> sum_mult(100,4,5))
[1] 3046

更新 如果你想计算一次或多次公倍数

sum_mult <- function(n,v) sum(sapply(v,function(x) sum(seq(n)[seq(n) %% x==0])))

这样

> sum_mult(5,5))
[1] 4033
,
Total_sum <- function(n,v){
  
  sum = 0 #initialize a sum variable
  
  for (i in (1:n)){ #take each integer to n 
    
    for (item in v){ #take each item in the input vecto
       
      if (i %% item == 0){ #check if the particular integer (to the n counter) is a multiple of item via the modulo operator
        sum = sum + i #if yes,add it up to the sum
      }
    }
  }
  return(sum)
}