求最大公约数(最大公因数)—— 欧几里得算法
创作时间:
作者:
@小白创作中心
求最大公约数(最大公因数)—— 欧几里得算法
引用
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;
}
本文原文来自博客园
热门推荐
林正英教你念“急急如律令”
头晕头痛可能是这些疾病在作祟
坚持这几类运动,好处不只是平稳血压
LGBTQ平权运动:从性解放到法律认可
健脾丸的作用与功效 健脾丸服用方法及相关问题解答
贵州平坝樱花观赏指南2024:最佳观赏时间及赏樱路线
龙岩至云水谣之旅:探秘神秘古镇
龙岩至南靖云水谣:完整攻略及交通、住宿、美食指南
秋冬季节灰指甲高发,专家提醒:这些预防措施要记牢
央企重组整合加速推进,聚焦战略性新兴产业
深度揭秘:汽车抛光的流程与注意事项,让爱车焕然一新!
深度揭秘:汽车抛光的流程与注意事项,让爱车焕然一新!
酷狗音乐被判赔22万!腾讯音乐集团再陷版权纠纷
6月重磅合资合作一览:捷豹路虎携手奇瑞开启合资新模式,上汽与大众签署系列协议
冬天如何搭配羽绒服,掌握这些技巧,显瘦保暖还有气质
羽绒服搭配阔腿裤过时了吗?看完10套穿搭对比图示范,你就有答案
当“搞钱”遇上婚姻:职场人婚恋观的悄然转变
拨打122,教你高效举报酒驾!
脂肪瘤會自然消失嗎?脂肪瘤原因、切除方法與費用
吊车出租财务管理系统:高效管理新趋势
工亡赔偿金如何分配
丧葬费和抚恤金如何分配
退休教师死亡后配偶每月有补贴吗?
2025最新孕期营养指南:从孕早期到哺乳期的全面营养规划
中国医师协会发布最新孕期营养指南:关键营养素补充方案全解析
全国31省市2025年企退人员(丧葬费+抚恤金)最新情况一览
老年人的生活质量提升:关注需求,改善生活质量
酒驾举报新招:一键报警神器上线!
《2024中国酒驾预防白皮书》发布:拒绝酒驾,从我做起!
同理心的深化:通过角色扮演提升孩子的情感共鸣能力