求最大公约数(最大公因数)—— 欧几里得算法
创作时间:
作者:
@小白创作中心
求最大公约数(最大公因数)—— 欧几里得算法
引用
1
来源
1.
https://www.cnblogs.com/1873cy/p/18469778
欧几里得算法,又称辗转相除法,是求解两个数最大公约数(GCD)的经典算法。这种方法通过不断用较小的数替换较大的数,并取余数,最终在余数为0时找到最大公约数。本文将详细介绍欧几里得算法的基本思想、具体步骤,并给出C++语言的迭代和递归实现方式。
欧几里得算法
欧几里得算法(又称辗转相除法)用于计算两个数的最大公因数,被称为是世界上最古老的算法。
基本思想
两个正整数 (a) 和 (b),它们的最大公约数 (\text{gcd}(a,b)) 与 (b) 和 (a) 除以 (b) 得到的余数的最大公约数 (\text{gcd}(b,a%b)) 相同。通过不断用较小的数替换较大的数,并取余数,最终在余数为0时找到最大公约数。
举例说明
以求 1112 与 695 这两个数的最大公约数为例:
- 首先用较大的数字除以较小的数字,求出余数,也就是堆两个数字进行模运算。得到余数 417
- 接下来再用除数 695 和余数 417 进行模运算,结果为 278。
- 继续进行同样的操作,对 417 和 278 作模运算,结果为139。
- 对 278 和 139 作模运算,结果为0,也就是说278可以被139整除。
- 余数为0时,最后一次运算中的除数 139 就是 1112 和 695 的最大公约数。
算法实现
以下是欧几里得算法的C++实现,包括迭代和递归两种方式:
#include "iostream"
using namespace std;
/*欧几里得算法—求最大公约数—迭代实现*/
int gcd(int a, int b){
while (b != 0){
int tmp = a;
a = b;
b = tmp % b;
}
return a;
}
/*欧几里得算法—求最大公约数—递归实现*/
int gcd_dg(int a, int b){
return b == 0 ? a : gcd_dg(b, a % b);
}
int main(){
cout << gcd(1112, 695) << endl;
cout << gcd_dg(1112, 695) << endl;
system("pause");
return 0;
}
本文原文来自博客园
热门推荐
诺丁汉森林:从三冠王到新射手王的传奇之路
诺丁汉森林首夺欧冠:克拉夫压迫战术成就英伦传奇
iOS18应用隐藏功能引争议:隐私保护还是信任危机?
常吃松子对人有哪些益处
《怪兽8号》第二季定档2025,怪兽迷们准备好爆肝了吗?
松果上市季节详解:从生长到食用的全方位指南
《恐怖奶奶》:让你心跳加速的惊悚体验
从高铁车次密度,看经济趋势
广东城际铁路“上新”,对谁最有益?
广深1小时轨道圈,南珠(中)城际进度加速
北滘镇小学教育资源分布全攻略:18所学校详解与学区房指南
诺丁汉森林英超6连胜后升至第4,时隔25年再进联赛前三
英超大冷门:升班马诺丁汉森林跻身前三,仅差榜首6分
海安河豚宴:舌尖上的传奇
冬日海安美食探秘:传统名菜与特色小吃
海安冰雪酒:百年非遗美食传奇
冬季三菱空调制热功能使用指南,享受温暖舒适生活
空调不制热故障,具体原因和故障维修办法
读苏轼的《和子由渑池怀旧》,体会诗人对人生来去无定的怅惘和往事旧迹的深情眷念。
对不起用英语怎么说 – 不同场景、不同目的下的英文道歉表达
万元津贴加终身荣誉,东莞褒奖优秀环卫工人
热解析 | 重载型变频器的散热技术与应用指南
变频器故障频发?这7个常见问题解决方法,你一定要知道
变频器温度过高故障处理指南
解码心理韧性:科学原理、手相特征与实践指南
提供情绪价值的话术
环保又实惠,但防水是硬伤:实木颗粒板使用全攻略
西汉名臣韩安国:七国之乱立功,狱中复起为高官
健康炖排骨,生态猪排最佳时间揭秘
高压锅炖排骨,20分钟就能享受美味!