使用辅助函数为 R 中的向量创建最小公倍数函数
Create a function for Least Common Multiple for a vector in R with helper functions
在 R 中,
我有两个辅助函数
gcf(x,y) 求两个数的最大公因数
和
lcm(x,y) 求两个数的公倍数。
例如,
> gcd(85,75)
[1] 5
> lcm(20,50)
[1] 100
现在,我需要创建一个函数,它将整数向量作为参数,returns 元素的最小公倍数。
例如,
lcm_vector(c(20,50,75)) = 300
我知道这需要计算
LCM(20, 50, 75) = LCM(LCM(20, 50), 75).
但是我该如何处理向量的元素呢?我需要循环吗?
您可以使用 Reduce
将 运行 lcm
与向量中的每个新值保持一致
lcm_vector <- function(x) Reduce(lcm, x)
lcm_vector(c(20,50,75))
# [1] 300
如果你有像 x<-c(a,b,c,d,e)
这样的向量并且你有函数 f
。调用 Reduce(f, x)
就像调用 f(f(f(f(a, b), c), d), e)
在 R 中, 我有两个辅助函数
gcf(x,y) 求两个数的最大公因数
和
lcm(x,y) 求两个数的公倍数。
例如,
> gcd(85,75)
[1] 5
> lcm(20,50)
[1] 100
现在,我需要创建一个函数,它将整数向量作为参数,returns 元素的最小公倍数。
例如,
lcm_vector(c(20,50,75)) = 300
我知道这需要计算
LCM(20, 50, 75) = LCM(LCM(20, 50), 75).
但是我该如何处理向量的元素呢?我需要循环吗?
您可以使用 Reduce
将 运行 lcm
与向量中的每个新值保持一致
lcm_vector <- function(x) Reduce(lcm, x)
lcm_vector(c(20,50,75))
# [1] 300
如果你有像 x<-c(a,b,c,d,e)
这样的向量并且你有函数 f
。调用 Reduce(f, x)
就像调用 f(f(f(f(a, b), c), d), e)