5.2-5.3 最大公约数及最小公倍数(欧几里得算法——辗转相除法)

求最大公约数及最大公倍数的方法:

可以先用欧几里得算法求得最大公约数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;
 } 

猜你喜欢

转载自blog.csdn.net/qq_43590614/article/details/105072324
今日推荐