如何解决给定最大因数的公因数相加
问题是:
如何创建具有两个输入的函数,即向量 (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)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。