求最大公约数(最大公因数)—— 欧几里得算法
创作时间:
作者:
@小白创作中心
求最大公约数(最大公因数)—— 欧几里得算法
引用
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;
}
本文原文来自博客园
热门推荐
实验室实验员是做什么的
“……”不是省略号!10个写8个错,你不一定能写对,规范用法有3个
探索貔貅:古代神兽的魅力与现代风水文化的结合
股票振幅分析:如何判断市场走势与投资机会
亚洲最大贫民窟的逆袭:繁荣的孟买创业之城
博尔赫斯诞辰125周年:时间迷宫的漫游者,一生向往拜访中国
解锁AI驱动的代码审查:提升编程效率的利器
公路桥梁桩基设计三大要点详解
五行起名策略,带来福运连连
涨停价位的计算依据是什么?怎样根据计算结果进行投资策略调整?
CS2职业选手cadiaN:从籍籍无名到世界冠军的曲折之路
撬动农村新能源汽车市场 全面拉动农村市场消费潜力
气温走低,学会这几招,居家不怕“闷”!
肝癌晚期为什么吐?专家权威解答
液压产品的性能特点及其在工业领域的应用
汽车车门防撞条的贴法是怎样的?这种贴法对车门保护有何帮助?
提防那些过分关心你私事的人
湖州美食推荐:10种必尝美味,错过可惜!
狗狗皮肤敏感瘙痒?6个简单处理方法
每天敷面膜迷思揭密:专家教你肌肤保养的正确频率!
2025年度居民医保参保缴费开始了!
菠萝没吃完怎么存放
公租房申请需要多久批下来?详解公租房申请流程和时间要求
甘草金桔的功效与作用
胸痛是否需要立即就医?出现胸痛如何自救?
去中心化研究之代币(Token)及其在区块链领域的应用
避免“杨铭宇黄焖鸡米饭后厨乱象”,中国烹协发倡议加强食安管理
天人合一的正确解释
如何了解企业的业务范围和市场定位?这种了解对企业发展有何影响?
PPT动画效果的组合与分组:让你的演示更出彩