oj -数学问题 求最大公约数最小公倍数

在这里插入图片描述
最大公约数 欧几里得算法,a=b,b=a%b 判断b为0时,a为最大公约数
非递归写法:

#include<iostream>

using namespace std;

int gys(int a,int b){
	while(b!=0){
		int t = a % b;//给b的值 
		a = b;//a的递归值 
		b = t;//b的递归值 
	}
	return a;
}

int main(){
	
	int a,b;
	while(scanf("%d %d",&a,&b)!=EOF){
		printf("%d",gys(a,b));
	}
	
}

在这里插入图片描述

使用递归求公约数,a*b除以最大公约数即可以保证求得最小公倍数

#include<iostream>

using namespace std;
int gcb(int a,int b)
{
	return b == 0 ? a : gcb(b,a%b);
}
int main(){
	int a,b;
	while(scanf("%d %d",&a,&b)!=EOF){
		cout<<a*b/gcb(a,b);
	}
} 
发布了78 篇原创文章 · 获赞 3 · 访问量 6591

猜你喜欢

转载自blog.csdn.net/weixin_38023259/article/details/104251855