在使用欧几里得算法之前,我们应该知道什么是欧几里得算法:
当需要求两个数的最大公因数时,如果是两个比较大的数则需要用到欧几里得算法来进行简便的计算。下面举例求-1859和1573的最大公因数
1859=1x1573+286
1573=5x286+143
286=2x143+0
此时最后一步的余数为0,则取上一步的余数,此时该余数就是-1893和1573的最大公因数即为143
下面附上代码
#include<iostream>
using namespace std;
int main()
{
int a, b;
int a0, b0;
cout << "请输入所需要求最大公因数的两数" << endl;
cin >> a >> b;
cout << endl;
if (a > b)//将输入的数不管是大的数先输入还是小的数先输入都调整好顺序
{
a0 = a; b0 = b;
}
else if (a < b)
{
a0 = b; b0 = a;
}
int m; int x1, x2;
m = a0 % b0;
if (m == 0)//如果两个数其中一个能够被另外一个整除的情况
{
cout << "得出最大公因数为:";
int x;
x = a0 / b0;
if (x > b)
{
cout << x;
}
else
cout << b0;
}
if (m != 0)//欧几里得算法
{
x2 = b0;
x1 = m;
m = x2 % x1;//试运行一步
}
if (m != 0)
{
for (int i = 0; i < 100; i++)
{
x2 = x1;
x1 = m;
m = x2 % x1;//欧几里得算法当中取两数的余数进行计算,当最后余数为0的时候取前一步的余数就是最大公因数
if (m == 0)
{
cout << "得出最大公因数为:";
cout << x1 << endl;
break;
}
}
}
cout << endl;
system("pause");
}