#include <stdio.h>
int main()
{
int n,m,gys,gbs;
int gcd(int a, int b);
int lcm(int a, int b);
scanf("%d%d",&n,&m);
gys=gcd(n,m);//最大公约数
gbs=lcm(n,m);//最小公倍数
printf("%d %d\n",gys,gbs);
return 0;
}
int gcd(int x,int y)/**!!!求最大公约数,辗转相除法!!!*/
{
int r;
while(y>0)
{
r=x%y;
x=y;
y=r;
}
return x;
}
int lcm(int x,int y)/**最小公倍数*/
{
return ((x*y)/gcd(x,y));
}
递归:
#include<iostream>
using namespace std;
int a , b , a1 , b2 , l;
int gcd(int x , int y)
{
if(y==0)
return x;
else
return gcd(y , x%y);
}
int main()
{
cout << "请输入两个正整数,计算它们的最大公约数" << endl ;
int a , b , ans;
cin >> a >> b;
if(a > b)
ans = gcd(a , b);
else
ans = gcd(b , a);
cout << ans;
return 0;
}