先把代码奉上 <@u@>
#include<iostream>
using namespace std;
int zdgys(int x,int y){
int z=y;
while(x%y!=0){
z=x%y;
x=y;
y=z;
}
return z;
}
int zxgbs(int x,int y){
return x*y/zdgys(x,y);
}
int main(){
int a,b;
cin>>a>>b;
cout<<zdgys(a,b)<<endl<<zxgbs(a,b);
return 0;
}
什么是辗转相除法
划重点了:
假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里德算法,是这样进行的:
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1
如有疑问,我会继续补充的。。。