#include "stdafx.h"
#include <iostream>
using namespace std;
/*
求最大公因数:辗转相除法
有两整数a和b
1.a%b得余数c
2.若c=0,则b即为两数的最大公约数
3.若c≠0,则a=b,b=c,再回去执行1
*/
int FindMaxCommonFactor_Division(int a, int b)
{//求最大公因数——辗转相除法
int c;
do{
c = a % b;
a = b;
b = c;
} while (c);
return a;
}
//辗转相除法——递归简写
int Fun_Div(int a, int b)
{
return b == 0 ? a : Fun_Div(b, a%b);
}
/*
求最大公因数:相减法
有两整数a和b
1.若a>b,则a=a-b
2.若a<b,则b=b-a
3.若a=b,则a(或b)即为两数的最大公约数
4. 若a≠b,则再回去执行1
*/
int FindMaxCommonFactor(int a, int b)
{//求最大公因数——相减法
while (a != b)
{
if (a > b)
a -= b;
else
b -= a;
}
return a;
}
/*
求最小公倍数:
最小公倍数=两整数的乘积÷最大公约数
*/
int _tmain(int argc, _TCHAR* argv[])
{
int iNum1;
int iNum2;
int iMaxCF;//最大公因数
int iMinCM;//最小公倍数
cin >> iNum1 >> iNum2;
iMaxCF= FindMaxCommonFactor_Divison(iNum1,iNum2);//求最大公因数
iMinCM= iNum1*iNum2/iMaxCF;//求最小公倍数
cout << "Greatest common factor = " << iMaxCF\
<< "\nLeast common multiple = " << iMinCM << endl;
return 0;
}