C++ 求 Gcd 程序

要理解本示例,您应该了解以下 C++ 编程 主题


能够整除两个整数的最大整数称为这两个数的 GCD 或 HCF。

例如, 4 和 10 的 GCD 是 2,因为它是能同时整除 4 和 10 的最大整数。 


示例:1. 使用 for 循环查找 HCF/GCD

#include <iostream>
using namespace std;

int main() {
  int n1, n2, hcf;
  cout << "Enter two numbers: ";
  cin >> n1 >> n2;

  // swapping variables n1 and n2 if n2 is greater than n1.
  if ( n2 > n1) {   
    int temp = n2;
    n2 = n1;
    n1 = temp;
  }
    
  for (int i = 1; i <=  n2; ++i) {
    if (n1 % i == 0 && n2 % i ==0) {
      hcf = i;
    }
  }

  cout << "HCF = " << hcf;

  return 0;
}

这个程序逻辑很简单。

在这个程序中,较小的整数存储在 n2 中,n1n2 之间较小的那个。然后循环从 i = 1 迭代到 i <= n2,每次迭代 i 的值增加 1。

如果两个数都能被 i 整除,则该数存储在变量 hcf 中。

这个过程在每次迭代中重复。当迭代完成后,HCF 将存储在变量 hcf 中。


示例 2:使用 while 循环查找 GCD/HCF

#include <iostream>
using namespace std;

int main() {
  int n1, n2;

  cout << "Enter two numbers: ";
  cin >> n1 >> n2;
  
  while(n1 != n2) {
    if(n1 > n2)
      n1 -= n2;
    else
      n2 -= n1;
  }

  cout << "HCF = " << n1;
  
  return 0;
}

输出

Enter two numbers: 16
76
HCF = 4

在上面的程序中,较大的数减去较小的数,然后将结果存储在较大的数的位置。

这里,n1 -= n2n1 = n1 - n2 相同。同样,n2 -= n1n2 = n2 - n1 相同。

这个过程一直持续到两个数相等为止,此时它们的值就是 HCF。

让我们看看当 n1 = 16n2 = 76 时,这个程序是如何工作的。

n1 n2 n1 > n2 n1 -= n2 n2 -= n1 n1 != n2
16 76 false - 60 true
16 60 false - 44 true
16 44 false - 28 true
16 28 false - 12 true
16 12 true 4 - true
4 12 false - 8 true
4 8 false - 4 false

在这里,当 n1 != n2 变为 false 时,循环终止。

在最后一次循环迭代后,n1 = n2 = 4。这是 GCD/HCF 的值,因为 4 是能同时整除 1676 的最大数。


我们也可以使用 函数递归 来查找两个数的 GCD。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战