跳到主要内容

R 程序:查找最大公约数

在本文中,您将学习通过两种不同的方式创建用户定义函数来查找GCD(最大公约数)。

要理解这个示例,您应该了解以下R编程主题:

两个数的最大公因数(H.C.F)或最大公约数(G.C.D)是完美地除尽这两个给定数的最大正整数。

例如,12和14的H.C.F是2。

示例:查找GCD的程序


# 定义一个函数
hcf <- function(x, y) {
if (x < y) {
smaller <- x
} else {
smaller <- y
}
for (i in 1:smaller) {
if ((x %% i == 0) && (y %% i == 0)) {
hcf <- i
}
}
return(hcf)
}

# 从用户那里获取输入
num1 <- as.integer(readline(prompt = "输入第一个数字:"))
num2 <- as.integer(readline(prompt = "输入第二个数字:"))

print(paste("数字", num1, "和", num2, "的H.C.F.是", hcf(num1, num2)))

输出

输入第二个数字:120
[1] "数字 72 和 120 的H.C.F.是 24"

这个程序要求输入两个整数,并将它们传递给一个函数,该函数返回H.C.F。

在函数中,我们首先确定这两个数字中较小的一个,因为H.C.F只能小于或等于较小的数字。

然后,我们使用一个for循环,从1到这个数字。

在每次迭代中,我们检查我们的数字是否完美地除尽了输入的两个数字。

如果是的话,我们将这个数字存储为H.C.F。在循环完成时,我们得到了完美地除尽这两个数字的最大数字。

上述方法易于理解和实现,但不高效。一个更高效的找到H.C.F的方法是欧几里德算法。

欧几里德算法查找GCD

这个算法基于这样一个事实,两个数的H.C.F除了它们的差也能整除。

在这个算法中,我们将较大的数除以较小的数并取余数。现在,将较小的数除以这个余数。重复,直到余数为0。

例如,如果我们要找到54和24的H.C.F.,我们将54除以24。余数是6。

现在,我们将24除以6,余数是0。因此,6就是所需的H.C.F。我们可以用以下方式在Python中完成。

示例2:使用欧几里德算法找到GCD

    while(y) {
temp <- y
y <- x %% y
x <- temp
}
return(x)
}

在这里,我们循环直到y变为零。

在每次迭代中,我们将y的值放入x中,并将余数(x % y)放入y中,使用一个临时变量。

y变为零时,x中有H.C.F。