求两数的最大公约数

这里我们使用欧几里得算法来实现求两个数的最大公约数。

先来看代码(C++):

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int gcd(int x, int y)
 5 {
 6     int a, b, r;
 7     a = x > y ? x : y;
 8     b = x < y ? x : y;
 9 
10     while (b != 0) {
11         r = a % b;
12         a = b;
13         b = r;
14     }
15     return a;
16 }
17 
18 int main()
19 {
20     int a, b,c;
21     cout << "请输入两个数:";
22     cin >> a >> b;
23     c = gcd(a, b);
24     cout << "这两个数的最大公约数为:";
25     cout << c << endl;
26     return 0;
27 }

 

 分析:

首先我们需要明确两个数谁大谁小。然后利用辗转相除法来完成这个过程。程序中的while循环就是用来控制辗转相除的这个过程的。两个数不断地取模,然后赋新值。

循环结束条件就是两个数取模结果为0。在程序中的体现就是把r赋值给b,当b=0的时候,也就是r为0的时候,循环结束。

posted @ 2021-03-09 15:10  EvanTheBoy  阅读(238)  评论(0编辑  收藏  举报