1360: 最大公约与最小公倍
1.描述
输入两个正整数,输出其最大公约数和最小公倍数。
输入
输入两个正整数n和m(n,m<=1000000)。输入保证最终结果在int范围内。
输出
输出两个整数,用空格隔开。表示m和n的最大公约数和最小公倍数。
样例输入
4 6
样例输出
2 12
提示
注意运算过程中的溢出问题
2.代码
方法一
#include <stdio.h>
int main()
{
long long int a,d,b,m,n,c = 0;
scanf("%lld %lld",&a,&b);
m=a,n=b;
while (c=a%b) //最大公约数
{
a = b;
b = c;
}
printf("%lld\n", b);
d = m*n;
c=0;
while (c = m%n) //最小公倍数
{
m = b;
n = c;
}
d = d / n;
printf("%lld\n", d);
}
方法二
#include<stdio.h>
#include<math.h>
int main()
{
long long int m,n,i,a,temp;
scanf("%lld %lld",&m,&n);
if(n>m)
{
temp=m;
m=n;
n=temp;
}
for(i=n;i>0;i--)
{
if(m%i==0&&n%i==0)
{
printf("%lld %lld",i,m*n/i);
break;
}
}
return 0;
}