最大公约数(C++)

最大公约数

欧几里得算法

欧几里得算法也称辗转相除法,是求最大公约是最常用也是最简单的方法。

递归实现

#include<iostream>
using namespace std;
int gcd(int a, int b)
{
	if(a % b == 0) return b;
	return gcd(b, a%b);
}
int main()
{
	int a,b;
	cin>>a>>b;
	cout<<gcd(a, b)<<endl;
	return 0;
}

非递归实现
由于递归实现太过耗费空间,并且不能够解决一些计算量过大的数据,所以可以使用循环来进行优化

#include<iostream>
using namespace std;
int gcd(int a, int b)
{
	while(a % b != 0)
	{
		a = b;
		b = temp % b;
		temp = a;
	}
	return b;
}
int main()
{
	int a,b;
	cin>>a>>b;
	cout<<gcd(a, b)<<endl;
	return 0;
}

最小公倍数

欧几里得算法当然也可以解决最小公倍数的问题

两个数的最小公倍数就是两个数的乘积除以这两个数的最大公约数~

cout<<(a * b)/gcd(a,b);

posted @   Tqqj  阅读(167)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示