题目描述
输入两个正整数m和n,求其最大公约数和最小公倍数。
输入
两个整数
输出
最大公约数,最小公倍数
样例输入
5 7
样例输出
1 35
这是一种内置库函数 __gcd() ;比较方便
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int m,n;
int GCD,LCM;//最大公约数和最小公倍数
cin>>m>>n;
GCD=__gcd(m,n);//这里是一个<algorithm>中的内置库函数可以了解一下
LCM=m*n/GCD; //两个数的乘积等于这两个数的最大公约数与最小公倍数的乘积
cout<<GCD<<" "<<LCM<<endl;
return 0;
}
另一种正常解法:辗转相除法:
#include <iostream>
using namespace std;
int main()
{
int m,n,c=1;//这里给c赋值为1,是为了保证下面while()的正常执行
cin>>m>>n;
int q=m*n;
int t;
m<n?t=m,m=n,n=t:m=m,n=n;
int GCD,LCM;
while(c!=0)//辗转相除,直到除数为0
{
c=m%n;
m=n;
n=c;
}
GCD=m;
LCM=q/GCD;
cout<<GCD<<" "<<LCM<<endl;
return 0;
}