首页 > 专题系列 > C基础练习 > C语言程序设计-最大公约数和最小公倍数[函数应用]
2013
11-19

C语言程序设计-最大公约数和最小公倍数[函数应用]

10052 最大公约数和最小公倍数

【问题描述】对给定的两组数(每组数包括2个整数),分别计算出两组数的最大公约数和最小公倍数的和。如: 20、12为第一组,287为第二组。第一组数的最大公约数为4,最小公倍数为60;第二组数的最大公约数为7,最小公倍数为28;所以两组数的最大公约数之和为11,两组数的最小公倍数之和为88。要求最大公约数和最小公倍数分别由功能函数完成。
【输入形式】输入包括两行,每行为一组,每组两个整数。

【输出形式】输出包括两行,第一行为两组数的最大公约数之和,第二行为两组数的最小公倍数之和。

【样例输入】20 12
                    28  7
【样例输出】11
                    88

【样例说明】这两组数的最大公约数之和为11,最小公倍数之和为88。(注意: 输出的两个数每个数后面均以换行符结束。)

【评分标准】本题共4个测试点,每个测试点0.25分,总分1.0分。

#include <iostream>
using namespace std;
int gcd(int , int);
int lcm(int , int);
int main()
{
	int a,b,a1,b1;
	cin>>a>>b>>a1>>b1;
	cout<<gcd(a,b) + gcd(a1,b1)<<endl;
	cout<<lcm(a,b) + lcm(a1,b1)<<endl;
	return 1;
}


//使用辗转相除法
int gcd(int a, int b)
{
	int temp;
	if(a < b)
	{
		temp = a;
		a = b;
		b = temp;
	}
	while (b != 0)
	{
		temp = a % b;
		a = b;
		b = temp;
	}
	return a;
	
}
int lcm(int a,int b)
{
	return a * b / gcd(a,b);
}