问题描述
问题是:
如何创建具有两个输入的函数,即向量 (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)
}