C/C++经典程序训练1---最大公约数与最小公倍数
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入两个整数,求它们的最大公约数与最小公倍数。
输入
输入两个整数,两个整数之间用空格分开。
输出
第一行输出最大公约数;
第二行输出最小公倍数。
第二行输出最小公倍数。
示例输入
64
48
示例输出
16
192
ps:最小公倍数为两个数的乘积除以最大公约数
方法一:辗转相除法
<span style="font-size:18px;">#include <cstdio>
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
int m,n,m1,n1,t,r;
scanf("%d%d",&m,&n);
if(m<n)
{
t=m;
m=n;
n=t;
}
m1=m;
n1=n;
while(r)
{
r=m%n;
m=n;
n=r;
}
printf("最大公约数为%d 最小公倍数为%d\n",m,m1*n1/m);
return 0;
}</span>
方法二:
<span style="font-size:18px;">#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
int i;
int m,n;
int min,max;
int x,y;
scanf("%d %d",&m,&n);
if(m<n)
{
min=m;
max=n;
}
else
{
min=n;
max=m;
}
i=min;
while(i>=1)
{
if(min%i==0&&max%i==0)
{
x=i;
break;
}
i--;
}
printf("最大公约数为%d 最小公倍数为%d\n",x,m*n/x);
}
</span>