R 用给定的最大因子求公共因子之和
问题是: 如何创建具有两个输入的函数,即向量(v)和整数(n)。输出应该是小于或等于给定整数的所有值的总值,该整数至少是向量任何一个输入的一个因子 我最初是从写作开始的R 用给定的最大因子求公共因子之和,r,computer-science,R,Computer Science,问题是: 如何创建具有两个输入的函数,即向量(v)和整数(n)。输出应该是小于或等于给定整数的所有值的总值,该整数至少是向量任何一个输入的一个因子 我最初是从写作开始的 Integer=函数(n){ n_值=总和(0:n) 返回值(n_值) } 然而,我不知道这是否让我走错了路。任何帮助和指导都将不胜感激Total\u sum也许您可以尝试下面的代码 Total_sum <- function(n,v){ sum = 0 #initialize a sum variable
Integer=函数(n){
n_值=总和(0:n)
返回值(n_值)
}
然而,我不知道这是否让我走错了路。任何帮助和指导都将不胜感激
Total\u sum也许您可以尝试下面的代码
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)
}
sum_mult <- function(n, v) sum(seq(n)[rowSums(sapply(v, function(x) seq(n) %% x) == 0) > 0])
更新
如果要计算公共倍数一次或多次
sum_mult <- function(n, v) sum(sapply(v, function(x) sum(seq(n)[seq(n) %% x==0])))
社区鼓励为问题添加解释,而不是发布纯粹的代码答案(请参阅)。我尝试的所有迭代似乎都有效,代码中的路标帮助我理解。必须将sum=0才能开始求和?另外,“item”纯粹是另一个变量,比如“i”,所以本质上我们不需要定义向量本身。我想这是我浪费时间的地方。sum_mult(100,c(3,4,5))不应该打印[1]4033吗?其他人也一样。@HarrisonKeese我不知道你是想数一次普通倍数还是数几次。如果您想要的输出是后一种情况,您应该尝试更新答案。我在输入'sum_mult(100,c(2,4,6,11))作为示例时发现,答案不正确。它返回504211而不是272775…@HarrisonKeese您想只计算一次公共倍数还是多次?在你的帖子里没有澄清。如果您尝试我的第一个解决方案,它会给出272775
。我的第二个解决方案给出的结果与您接受的答案相同,但您说它是不正确的。我很困惑…抱歉,第一个答案是正确的,但我没有意识到在问题中我不应该重复相同的因素。第一个答案是正确的。道歉。
sum_mult <- function(n, v) sum(sapply(v, function(x) sum(seq(n)[seq(n) %% x==0])))
> sum_mult(5, c(2, 3))
[1] 9
> sum_mult(10, c(3, 5))
[1] 33
> sum_mult(100, c(3, 4, 5))
[1] 4033