欧几里得算法也叫辗转相除法,具体方法如下:
(单击链接可观看视频讲解:29、欧几里得算法求最大公约数_哔哩哔哩_bilibili)
先求a除以b的余数r | r=a%b | |
如果 余数不为零 | r!=0 | |
然后除数作为被除数 | a=b | |
余数作为除数 | b=r | |
继续相除 | r=a%b | |
余数为0时 除数即为两数的最大公约数 |
例1:
被除数 | 除数 | 余数 | |
a | b | r=a%b | |
2 | 4 | 2 | |
4 | 2 | 0 | |
2为最大公约数 |
例2:
被除数 | 除数 | 余数 | |
a | b | r=a%b | |
3 | 7 | 3 | |
7 | 3 | 1 | |
3 | 1 | 0 | |
1 为最大公约数 |
代码:
#include<iostream>
using namespace std;
int main()
{
int a,b,r;
cout<<"输入两个正整数:";
cin>>a>>b;
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
cout<<"最大公约数:"<<b<<endl;
return 0;
}