C/C++训练1---最大公约数与最小公倍数

//附上链接https://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/1131.html
#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#include<cmath>
using namespace std;
int maxgy(int a, int b)
{
	int m = a%b;
	while (m)
	{
		a = b;
		b = m;
		m = a%b;
	}
	return b;
}
int maxgb(int a, int b)
{
	return a*b / (maxgy(a, b));
}
int main()
{
	int n,i,a,b;
	scanf("%d%d", &a,&b);
	cout << maxgy(a, b) << endl;
	cout << maxgb(a, b) << endl;	
   	return 0;
}

/****************************
原理:
用辗转相除法求最大公约数
算法描述:

m用n求余为a, 若a不等于0
则 m = n, n = a, 继续求余
否则(即若a为0)  n 为最大公约数

最小公倍数 = 两个数的积 / 最大公约数

****************************/

猜你喜欢

转载自blog.csdn.net/cjava__/article/details/80779593