C语言题目:求最大公约数和最小公倍数

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:
输入在一行中给出两个正整数M和N(≤1000)。

输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:
511 292

输出样例:
73 2044

#include
int main()
{
	//最大公约数
	int a,b;
	int t;
	scanf("%d %d",&a,&b);
	int x=a;
	int y=b;
	//辗转相除法
	while(b!=0)
	{
		t=a%b;
		a=b;
		b=t;
	}
	//最小公倍数:x*y/a
	printf("%d %d\n",a,x*y/a);
	//printf("%d\n", x*y/a);

	return 0;
	
}

辗转相除法

1.如果b等于0,计算结束,a就是最大公因数

2.否则,计算a除以b的余数,让a等于b,而b等于那个余数。

3.回到第一步

a b t

12 18 12

18 12 6

12 6 0

6 0

最小公倍数求法:

两数之积/最大公约数

你可能感兴趣的:(C语言习题)