C++ 程序查找 HCF 或 GCD


2023年1月17日, Learn eTutorial
1674

在这个简单的 C++ 程序中,我们需要找到两个数的 HCF 或 GCD

什么是 HCF/GCD?

最高公因数 (HCF) 是能整除给定两个数的最大数。它也称为最大公约数。

HCF or GCD in C++?

我们如何计算 HCF?

HCF 或 GCD 可以通过多种方式计算,其中只有 3 种被广泛使用,如下所示

  • 通过列出因数法计算 HCF
  • 通过质因数分解法计算 HCF
  • 通过除法计算 HCF

通过除法计算 HCF

在这个 C++ 程序中,我们使用除法来计算 HCF

  1. 用较大的整数除以较小的整数,并检查余数。
  2. 然后,将前一步的余数作为新的除数,将前一步的除数作为新的被除数,再次执行长除法。
  3. 继续除法,直到余数达到零,我们将最后一次除法的除数作为 HCF。

如何实现一个 C++ 程序来查找 HCF?

这里用来查找 HCF 的逻辑是找到能够完美整除两个整数的最大整数。要求用户输入两个数字。将这些输入的值加载到两个整数类型变量 num1num2 中。比较两个整数并将较小的整数存储在 num2 中。这可以通过 if 条件完成。

如果 num > num1,则交换 num1num2。然后进入一个 for 循环。这里的条件是 int i = 1; i <=  num2; ++i。如果两个数字都可以被 i 整除,则该数字存储在变量 hcf 中。此过程在每次迭代中重复。最后,HCF 将存储在变量 hcf 中。

算法

步骤 1: 调用头文件 iostream。

步骤 2: 使用命名空间 std。

步骤 3: 打开整数类型 main 函数;int main()。

步骤 4: 声明整数变量;num1num2hcf

步骤 5: 打印一条消息以输入两个数字。

步骤 6: 将数字读入变量 num1num2

步骤 7: 比较 num1num2; 
              如果 num2 > num1;交换 num1num2

步骤 8: 从 i=0 到 <= num2 开始 for 循环;
             用 i 除 num1 num 2;如果两者都可以整除,则 
             hcf =i;

步骤 9:  打印 hcf

步骤 10: 退出

C++ 源代码

                                          #include <iostream>
using namespace std;

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

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

  cout << "HCF = " << hcf;

  return 0;
}
                                      

输出

Enter two numbers: 12
60
HCF = 12