//穷举法
#include<iostream>
using namespace std;
void main()
{
int a,b;
cin>>a>>b;
int O,o;
if(a>b)
{
O=a;
o=b;
}
else
{
O=b;
o=a;
}
while(o>=1)
{
if(a%o==0&&b%o==0) break;
o--;
}
while(1)
{
if(O%a==0&&O%b==0) break;
O++;
}
cout<<"a、b的最大公约数为:"<<o<<endl;
cout<<"a、b的最小公倍数为:"<<O<<endl;
}
//辗转相除法
#include<iostream>
using namespace std;
void main()
{
int a,b,c;
cin>>a>>b;
int O,o;
if(a>b)
{
O=a;
o=b;
}
else
{
O=b;
o=a;
}
while(o!=0)
{
c=O%o;
O=o;
o=c;
}
cout<<"a、b的最大公约数为:"<<O<<endl;
cout<<"a、b的最小公倍数为:"<<a*b/O<<endl;
}
辗转相除法中运用递归求最大公约数:
int Gcd(int n,int m)
{
if(m==0) return n;
if(m>n)
return Gcd(m,n);
else
return Gcd(m,n%m);
}