欧几里得算法求最大公约数及其非公式化证明
程序员文章站
2024-03-19 22:02:22
...
输入两个整数a和b,计算并输出a和b的最大公约数。
#include <iostream>
using namespace std;
int gcd(int a, int b)
{
return a % b == 0 ? b : gcd(b, a % b);
}
int main()
{
int a, b;
cin >> a >> b;
cout << gcd(a, b);
return 0;
}
这个题目是非常经典的算法,本身没什么好说的,其证明如下:
如果,a是b的倍数,显然b是a和b的最大公因子。
如果,任意整除a和b的数必定整除 ,因此整除n和r的任何数必定整除。
所以{a,b}的最大公因子集合和{b,r}的公因子集合是一样的。特别的,{a,b}的最大公因子和{b,r}的最大公因子是一样的。
上一篇: 第1部分 基础算法(提高篇)--第1章- 贪心算法1428:数列分段
下一篇: 二分查找及原理
推荐阅读