一.最大公约数的定义
两个不全为0的非负整数m和n的最大公约数即为gcd(m,n),代表着能够被m和n整除(即余数为0)的最大正整数。
二.关于欧几得算法
古希腊数学家、亚历山大港的欧几里得(公元前3世纪)所著的《几何原本》,以系统论述几何学而著称,在其中的一卷里,他简要的描述了最大公约数算法。用现代数学的术语来表示,欧几得算法(Euclid’s algorithm)采用的方法是重复应用下列等式,直到m mod n 等于0。
gcd(m,n) = gcd(n,m mod n);
因为gcd(m,0) = m,m的最后取值也就是m和n的初值的最大公约数。
举个例子:gcd(60,24) = gcd(24,12) = gcd(12,0) = 12
三.代码实现
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int x,y,z;
cout << "请输入你的要求最大公约数的两个不全为0的两个整数:";
cin >> x >> y;
while(y!=0)
{
z = x % y; //将余数保存下来
x = y; //进行赋值
y = z;
};
cout << x << endl;
return 0;
}