《C++程序设计 * 基础、编程抽象与算法策略》
Programming Abstractions in C++
[美] 埃里克S. 罗伯茨(Eric S. Roberts)著 李雁妮 译
最大公约数(Greatest Common Divisor, gcd)
即一个可以同时整除 x 和 y 的最大整数
希腊数学家 * 欧几里得 算法:
1、用 x 除以 y 并计算余数 r;
2、若 r 等于0,则算法结束,最大公约数为 y。
3、若 r 不等于0,则令 x 的值为 y ,y 的值为 r ,重复该过程。
代码:
1 /*
2 * File: gcd.cpp
3 * _ _ _ _ _ _ _
4 * Greatest Common Divisor
5 */
6 #include <iostream>
7
8 int gcd(int x, int y);
9
10 int main()
11 {
12 int n1, n2;
13 std::cout<< "*** Greatest Common Divisor ***" <<std::endl;
14 std::cout<< "Enter 1st number: ";
15 std::cin>> n1;
16 std::cout<< "Enter 2nd number: ";
17 std::cin>> n2;
18 std::cout<< "gcd of " << n1 << " and " << n2 << " is " << gcd(n1,n2) <<std::endl;
19 return 0;
20 }
21
22 int gcd(int x, int y)
23 {
24 int r = x % y;
25 while(r != 0)
26 {
27 x = y;
28 y = r;
29 r = x % y;
30 }
31 return y;
32 }
执行: