最大公约数 欧几里得算法,a=b,b=a%b 判断b为0时,a为最大公约数
非递归写法:
#include<iostream>
using namespace std;
int gys(int a,int b){
while(b!=0){
int t = a % b;//给b的值
a = b;//a的递归值
b = t;//b的递归值
}
return a;
}
int main(){
int a,b;
while(scanf("%d %d",&a,&b)!=EOF){
printf("%d",gys(a,b));
}
}
使用递归求公约数,a*b除以最大公约数即可以保证求得最小公倍数
#include<iostream>
using namespace std;
int gcb(int a,int b)
{
return b == 0 ? a : gcb(b,a%b);
}
int main(){
int a,b;
while(scanf("%d %d",&a,&b)!=EOF){
cout<<a*b/gcb(a,b);
}
}