最大公约数和最小公倍数 (PTA)

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

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

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

输入样例:
511 292

输出样例:
73 2044

代码实现(vs2013)

#include"stdio.h"
#include"stdlib.h"
/*
欧几里德算法:辗转求余
原理:gcd(a,b)=gcd(b,a mod b)
当b为0时,两数的最大公约数即为a
getchar()会接受前一个scanf的回车符
*/
unsigned int Gcd(unsigned int M, unsigned int N)
{
     
	unsigned int Rem;
	while (N > 0)
	{
     
		Rem = M%N;
		M = N;
		N = Rem;
	}
	return M;
}
int main()
{
     
	int a,b;
	printf("请输入两个正整数(<=1000)");
	scanf_s("%d %d", &a, &b);
	printf("%d %d", Gcd(a, b), a*b / Gcd(a, b));
	getchar();
	system("pause");
	return 0;
}

你可能感兴趣的:(c语言,算法)