求最大公约数及最大公倍数的方法:
可以先用欧几里得算法求得最大公约数d,则最小公倍数为ab/d,考虑到有可能溢出,故可以写为a/b*d;
1818: 最大公约数
[Creator : Imported]
Time Limit : 1.000 sec Memory Limit : 32 MB
Solved: 443Submit: 869Statistics
Description
输入两个正整数,求其最大公约数。
Input
测试数据有多组,每组输入两个正整数。
Output
对于每组输入,请输出其最大公约数。
Sample Input Copy
49 14
Sample Output Copy
7
参考代码:
#include <cstdio>
int gcd(int a,int b)
{
if(b==0)
return a;
else
return gcd(b,a%b); //欧几里得算法求最大公约数
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
int d=gcd(a,b);//最大公约数
int p=a/b*d;//最小公倍数
printf("%d %d\n",d,p);
}
return 0;
}