# C++ 程序：查找 GCD

> 原文： [https://www.programiz.com/cpp-programming/examples/hcf-gcd](https://www.programiz.com/cpp-programming/examples/hcf-gcd)

#### 有关使用循环和决策语句来计算两个整数（正整数和负整数）的 GCD 的不同方法的示例。

要理解此示例，您应该了解以下 [C++ 编程](/cpp-programming "C++ tutorial")主题：

*   [C++ `if`，`if...else`和嵌套`if...else`](/cpp-programming/if-else)
*   [C++ `for`循环](/cpp-programming/for-loop) 
*   [C++ `while`和`do...while`循环](/cpp-programming/do-while-loop)

* * *

可以完美除以两个整数的最大整数称为这两个数字的 GCD 或 HCF。

* * *

### 示例 1：使用`while`循环查找 GCD

```cpp
#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;
}
```

**输出**

```cpp
Enter two numbers: 78
52
HCF = 26
```

在上面的程序中，从较大的数字中减去较小的数字，并存储该数字以代替较大的数字。

继续此过程，直到两个数字相等，即 HCF。

* * *

### 示例：2.使用`for`循环查找 HCF/GCD

```cpp
#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;
}
```

该程序的逻辑很简单。

在该程序中，`n1`和`n2`之间的小整数存储在`n2`中。 然后，循环从`i = 1`迭代到`i <= n2`，并且在每次迭代中，`i`的值增加 1。

如果两个数字都可以被`i`整除，则该数字将存储在变量`hcf`中。

迭代完成后，HCF 将存储在变量`hcf`中。