如何在 R 中找到 (1:n) 数字列表的 GCD

问题描述

如何在 R 中找到 (1:n) 数字列表的 GCD?

Toolbar

这是我为两个整数查找 GCD 的代码,如何修改它以查找从 1 到 n 的数字列表的 GCD,而不会对我的原始代码进行太多更改? 非常感谢!

解决方法

您可以使用 any 函数:

GCD <- function(x) {
  m = min(x)
  
  while (any(x %% m > 0)){
    m = m - 1
  }
  
  return(m)
}

GCD(c(12,24,28,36,200))
# [1] 4

GCD(c(6,200))
# [1] 2
,

您可以像下面这样基于 gcd 定义函数 GCD

gcd <- function(...) Reduce(GCD,list(...))

你可以试试

> gcd(6,200)
[1] 2