假定两个整数 num1 和 num2,辗转相除法求其最大公约数:用 num1 除以 num2 ,求出余数 resd ,如果 resd ==0,则当前num2就是最大公倍数;如果 resd != 0,令num1=num2,num2=resd ,重复步骤,直至 resd ==0为止。
求出最大公约数 divisor,则最小公倍数 multiple=num1*num2/divisor。
代码实现:
#include<iostream>
using namespace std;
int main()
{
int num1,num2,resd; //要求的数、余数
int divisor,multiple; //最大公约数、最小公倍数
cin>>num1>>num2;
multiple = num1*num2; //先保留num1*num2
if(num2>num1){ //如果num2>num1,交换数值
resd = num1;
num1 = num2;
num2 = resd;
}
do{
resd=num1%num2;
num1=num2;num2=resd;
}while(resd!=0);
divisor = num1;
multiple /= divisor; //即 multiple = multiple / divisor = num1*num2 / divisor
cout<<divisor<<","<<multiple<<endl;
return 0;
}