| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 欧几里得与扩展欧几里得算法 -> 正文阅读 |
|
[数据结构与算法]欧几里得与扩展欧几里得算法 |
一、欧几里得算法1.简介欧几里得算法又称辗转相除法,这种算法我们在高中的数学书上都有所了解,这种算法的用途是旨在求两个数的最大公约数(英文缩写为gcd)。 2.算法分析例如,如果我们要求去寻找12和16的最大公约数,我们可以这样操作: 第一步:16 mod 12 = 4; 第二步:12 mod 4 = 0; 第三步:4 mod 0,这时候b==0的时候,a==4就是我们12和16的最大公约数。 3.代码分析
代码的长度其实很简单,就是判断b是否为0,如果为0,返回a,否则递归寻找。 二、扩展欧几里得算法1.简介何为扩展欧几里得算法?扩展欧几里得算法顾名思义就是欧几里得算法的扩展。这个算法旨解决一个问题:求,其中a,b为常数,gcd(a,b)为a,b的最小公倍数 的整数解(可以拥有多个整数解)。 2.算法分析求解特殊情况: 首先我们要知道裴蜀定理,就是一定会有整数解。 由欧几里得算法可知;......① 若b=0时,则,x=1,令y=0; 若a≠0时,则成立;......② 即......③ 将①②③联立得 这样,我们可以用递归的形式来求得x和y的值。
求解一般情况:() 由裴蜀定理可知,若有解,则必然满足 令,则我们可以先求的解,然后得到x,y的值 其中x,y都是特解。 而非齐次通解=非齐次的特解+齐次通解则,我们只需要求的通解。 即,带入得到 3.代码分析例题引入:AcWing 878. 线性同余方程 例题分析:可以化为 即可以化为//因为k仅仅只是个常数,所以可以不变号 这样就是求x和k的整数解的题了。 AC代码:
关于求解最小正整数解的时候,只需要 x=(×%t+t)%t,t=b/gcd(a,b); 同理,y=(y%t+t)%t,t=a/gcd(a,b); ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 6:24:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |