| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 《星空解题家》:最大公约数GCD∏最大公倍数LCM【问题】—朴素枚举,辗转相除法,更相减损术,Stein算法 -> 正文阅读 |
|
[数据结构与算法]《星空解题家》:最大公约数GCD∏最大公倍数LCM【问题】—朴素枚举,辗转相除法,更相减损术,Stein算法 |
前言:求解最大公约数从高中一直到现在,始终是数学与程序设计的经典。现在,让我们看看GCD的四种解法
定义?
问题描述?
💥补充:[a,b]=a × b ÷ (a,b) ???????????????🛫🛫🛫🛫🛫🛫🛫🛫飞行分割线 1:朴素枚举法?要求a、b的最大公约数,我们可以从大到小枚举a的约数,然后再判断它是不是b的约数,不断枚举,直到找到满足条件的最大公约数 [1]朴素枚举C/C++代码实现如下🌀
[2]朴素枚举法:流程图😈:注:如果题目没给a、b的大小关系,加条补充
?🔑🔑🔑🔑🔑🔑🔑🔑🔑🔑🔑🔑🔑🔑🔑🔑解题分割线 2:欧几里得辗转相除法——《几何原本》?[1]辗转相除法公式:gcd(a,b) = gcd(b,a mod b)实现补充:非零数n与0的最大公约数永远为n
示例:
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 2022和 507 的最大公约数 3。 [2]我们可以将辗转相除法表示成如下递归式—— [^1][3]这样就很容易:C/C++递归代码实现如下🌀
[4]:next:C/C++非递归代码实现如下🌀
[5]辗转相除法:流程图😈:10100001000111000101001000101000100111111**【01分割线】** 3:中国古代:更相减损术——《九章算术》?[1]什么是更相减损法原文:
更相减损术,即:
转化为公式:
[2]you递归式推得:C/C++递归代码实现如下🌀
[3]更相减损术next:非递归代码实现如下🌀
[4]更相减损数:流程图😈:4.J.stein的stein算法[1]stein算法【探秘】《Stein算法只有整数的移位和加减法,很好地弥补了辗转相除法 递推式: 1 . gcd(a,b)=2*gcd(a/2,b/2), a mod 2=0且b mod 2=0时
[2]所以:stein递归代码实现如下🌀
[3]关于位运算方面的补充:
stein算法:C/C++非递归代码实现如下🌀
总结?GCD问题和LCM问题,是最最经典的数论问题,不仅要熟用模板,更要熟练其背后的推导、证明过程,这对以后的算法学习大有帮助/ 终于把GCD问题解透了🐉! 推荐习题? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 16:24:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |