求两数的最大公约数
这里我们使用欧几里得算法来实现求两个数的最大公约数。
先来看代码(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的时候,循环结束。