最大公约数和最小公倍数 c++

求最大公约数和最小公倍数简便方法

  • 因为之前都是用循环求得最大公约数和最小公倍数,所以记录一下这个简单快速的方法;

输入

  • 若干行,每行两个数字m,n(1<=m,n<=1e5)

输出

  • 若干行,为m,n两个数字的最大公因数和最小公倍数
    样例输入

3 3
1 5

样例输出

3 3
1 5

代码

#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
//辗转相除法求得最大公约数 
int gys(int a,int b){
	int s = max(a,b);
	int t = min(a,b);
	if(s%t==0){
		return t;
	}else{
		return gys(t,s%t);
	}
}
main()
{
	int n,m;
	while(scanf("%d %d",&n,&m)!=EOF){
		int s = gys(n,m);
		int t = n*m/s;	//最小公倍数等于两数之积除以最大公约数 
		cout<<s<<" "<<t<<endl;
	}
} 

求最大公约数:
两个数中较大的值除较小的值得到的余数为0则小的值为最大公约数,否则将用较小的数和余数进行重复判断
求最小公倍数
两数之积除以最大公约数

发布了10 篇原创文章 · 获赞 3 · 访问量 509

猜你喜欢

转载自blog.csdn.net/weixin_44546342/article/details/103930447