使用辅助函数为 R 中的向量创建最小公倍数函数

问题描述 投票:0回答:2

在R中, 我有两个辅助函数

gcf(x,y) 用于查找两个数字的最大公因数

lcm(x,y) 用于查找两个数的租赁公倍数。

例如,

> gcd(85,75)
[1] 5
> lcm(20,50)
[1] 100

现在,我需要创建一个函数,该函数采用整数向量作为参数,返回元素的最小公倍数。

例如,

lcm_vector(c(20,50,75)) = 300

我知道这需要计算

LCM(20, 50, 75) = LCM(LCM(20, 50), 75)。

但是我该如何处理向量的元素呢?我需要循环吗?

r loops greatest-common-divisor lcm
2个回答
8
投票

您可以使用

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)


0
投票

可以使用最小公倍数

scm()
。它是用 C 语言编写的,旨在提高速度并处理 NA 值和小数。

library(cheapr)
scm(c(20,50,75))
#> [1] 300
scm(c(5, 5.5, 2.75, 123456789, NA), na_rm = TRUE)
#> [1] 6790123395

创建于 2024-07-27,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.