【问题描述】
编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。
【输入形式】
两个数,用空格隔开
【输出形式】
两个数,用空格隔开
【样例输入】
15 25
【样例输出】
5 75
【样例说明】
15和25的最大公约数是5,最小公倍数是75
解析
求最大公约数——辗转相除法
求最小公倍数——两数相乘再除以他们的最大公约数。
关于辗转相除法,我在之前的文章里面详细讲解过其原理,这里不再赘述。想看的请点击这些蓝色的文字:循环结构——求最大公约数和最小公倍数
#include<iostream>
using namespace std;
int gys(int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int gbs(int a,int b)
{
return a*b/gys(a,b);
}
int main()
{
int m,n;
cin>>m>>n;
cout<<gys(m,n)<<" "<<gbs(m,n)<<endl;
}