欧几里得算法及其扩展

  先来看看欧几里得算法:

 1 public class Gcd {
 2     /**
 3      * 欧几里德算法,即辗转相除法 最大公约数
 4      */
 5     public static long gcd(long m, long n) {
 6         return n == 0 ? m : gcd(n, m % n);
 7     }
 8 
 9     /**
10      * 最小公倍数lowest common multiple (LCM)
11      * 最小公倍数 = a * b / a和b的最大公约数
12      */
13     private static long lcm(long a, long b) {
14         return a * b / gcd(a, b);
15     }
16 }

  接着再来看裴蜀(贝祖)等式:对于任何整数a、b和它们的最大公约数d,关于未知数x和y的线性丢番图方程(称为裴蜀等式):ax+by = m 有整数解时当且仅当m是d的倍数。x、y可用扩展欧几里得算法求得。特别地,方程ax+by=1 有整数解当且仅当整数a和b互质。

  那什么是扩展欧几里得算法呢?

  现在我们知道了 a 和 b 的最大公约数是 gcd(a,b) 后面用gcd表示 ,那么,我们一定能够找到这样的 x 和 y ,使得: a*x + b*y = gcd 。这是一个不定方程。那么,怎么求出这个特解 x 和 y 呢?只需要在欧几里德算法的基础上加点改动就行了。我们观察到:欧几里德算法停止的状态是: a= gcd , b = 0 ,那么,这是否能给我们求解 x y 提供一种思路呢?

  首先,将a=gcd,b=0代入原方程,得到gcd*x+0*y=gcd。那么,这时候,只要x = 1 ,y 是 0 或者其他值(无所谓是多少,反正任何数乘以 0 都等于 0, 但是 x 一定要是 1),这时,我们就会有: a*1 + b*0 = gcd。 当然这是最终状态,但是我们是否可以从最终状态反推到最初的状态呢?

  假设当前我们要处理的是求出 a 和 b的最大公约数,并求出 x 和 y 使得 a*x + b*y= gcd ,而我们已经求出了下一个状态:b 和 a%b 的最大公约数,并且求出了一组x1 和y1 使得: b*x1 + (a%b)*y1 = gcd , 那么这两个相邻的状态之间是否存在一种关系呢?

  首先a可以表示成 a = b*t + k,而 t = a/b(这里的 “/” 指的是整除),k = a%b ,所以 可以得到a = b*(a/b) +k  -->  k=a-(a/b)*b  -->  a%b = a - (a/b)*b,代入 b*x1 + (a%b)*y1 = gcd。

  那么,我们可以进一步得到:gcd = b*x1 + (a-(a/b)*b)*y1
                   = b*x1 + a*y1 – (a/b)*b*y1
                   = a*y1 + b*(x1 – a/b*y1)

     对比之前我们的状态:求一组 x 和 y 使得:a*x + b*y = gcd ,是否发现了什么?

     这里: x = y1

           y = x1 – a/b*y1

  现在我们找到一组特殊的解  x0 和 y0,那么,我们就可以用 x0 和 y0 表示出整个不定方程的通解:

     x = x0 + (b/gcd)*t  ( t 取任意整数)

          y = y0 – (a/gcd)*t

  如果我们想要得到 x 大于 0 的第一个解的话,那么表达式就是:

    b /= d

    x = ( x0%b + b) % b

     以上就是扩展欧几里德算法的全部过程,依然用递归写:

 1 public class ExtGcd {
 2     static long x;
 3     static long y;
 4 
 5     public static long gcd(long m, long n) {
 6         return n == 0 ? m : gcd(n, m % n);
 7     }
 8     /**
 9      * 扩展欧几里得
10      * 调用完成后 静态变量xy是ax+by=m的解
11      * 返回的还是最大公约数
12      */
13     public static long ext_gcd(long a,long b){
14         if (b==0) { // 求出了最大公约数 为a
15             x = 1;
16             y = 0;
17             return a;
18         }
19         long res = ext_gcd(b, a % b);
20         //x,y已经被下一层递归更新了
21         long x1 = x;//备份x
22         x = y;//更新x
23         y = x1 - a / b * y;//更新y
24         return res;
25     }
26     public static void main(String[] args) {
27         System.out.println(ext_gcd(2, 7));  // 1
28         System.out.println(x+" "+y);        // -3 1
29     }
30 }

  最后再来看一下这个线性方程(或者叫二元一次不定方程):ax+by = m 。有整数解时当且仅当m是gcd的倍数

  public static long linearEquation(long a, long b, long m) throws Exception {long d = ext_gcd(a, b);//m不是gcd(a,b)的倍数,这个方程无解if (m % d != 0) {throw new Exception("无解");}long n = m / d;//约一下,考虑m是d的倍数x *= n;y *= n;return d;}

  扩展欧几里德算法的应用主要有以下两个方面:

   (1)求解不定方程;

   (2)求解模线性方程(线性同余方程)与逆元;

转载于:https://www.cnblogs.com/xiaoyh/p/10331666.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络物理层-编码技术实现

一.编码技术 编码技术描述归零编码(RZ)信号电平在一个码元内要恢复到0状态非归零编码(NRZ)高1低0反向不归零编码(NRZI)前后信号翻转表示后面一个码元为0,电平不变代表1曼彻斯特编码一个码元内,前高后低位1,前低后高为0差分曼彻斯特编码码元为…

神经网络的可解释性综述

报道:人工智能前沿讲习 作者:知乎—机器学习小谈地址:https://zhuanlan.zhihu.com/p/368755357本文以 A Survey on Neural Network Interpretability 读后感为主,加上自身的补充,浅谈神经网络的可解释性。论文&#x…

java内存溢出总结(1.8)

堆溢出 原因:老年代没有足够的空间存放即将进入老年代对象(或者没有连续的空间存下某个大对象),1.多次gc没有回收的对象 2. ygc后,s区满了,多余的对象直接进入老年代,3.大对象直接进入老年代解决…

大数据技术原理与应用-概述

一.大数据概述 (一)大数据概念 1.技术支撑:存储、计算、网络。 2.数据产生方式 第一阶段:运营式系统阶段第二阶段:用户原创内容阶段第三阶段:感知式系统阶段(物联网的实现普及) 3.大数据的特性(4V) 快速化(variety) 处理速度…

突破性进展!上海光机所成果登上《Nature》封面!

来源:中国科学院上海光学精密机械研究所中国科学院上海光学精密机械研究所强场激光物理国家重点实验室,利用自行研制的具有国际领先综合性能的超强超短激光装置,在基于激光加速器的小型化自由电子激光研究方面取得突破性进展。研究团队通过显…

爬取今日头条财经版块新闻

使用jupyter编辑, etree爬取 进入头条财经新闻网页,无法获取原网页内容,在查看各个请求中发现一个url里包含新闻信息.信息都在data里 import requests from lxml import etree import json url "https://www.toutiao.com/api/pc/feed/?categorystock&utm_sourcetout…

计算机网络(九)-物理层(补充)-傅里叶变换-信道复用

一.几个术语 1.码元------在使用时间域(时域)的波形表示数字信号时,代表不同离散数值的基本波形。 2.调制------把数字信号转换为模拟信号的过程。 3.解调------把模拟信号转换为数字信号的过程。 4.双绞线水晶头:从左到右分别为橙白橙(发送)、绿白蓝、蓝白绿、…

硅光芯片:突破“摩尔定律”曙光初现

来源:中国军网讲叙人:江天,国防科技大学前沿交叉学科学院研究员作者:王握文、任永存、朱晰然它是在硅基平台上将光电子和微电子融合起来的一种新技术它显示出的优异性能,为芯片研发“换道超车”带来希望它发展方兴未艾…

CF1096D Easy Problem(DP)

题意:给出一个字符串,去掉第i位的花费为a[i],求使字符串中子串不含hard的最小代价。 题解:这题的思路还是比较套路的, dp[i][kd]两维,kd0表示不含d的最小花费,1表示不含rd的,2表示不…

计算机网络(十)-数据链路层-差错控制

一.差错控制 1.1 差错: 噪声引起 全局性:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在。解决办法:提高信噪比来减小或避免干扰。局部性:外界特定的短暂原因所造成的的冲击噪声,是产生的差错…

第八篇!95后天才少年曹原再发Nature!

来源:自科在线编辑:nhyilin2021年7月21日,“石墨烯驾驭者“曹原作为第一作者和通讯作者在国际顶尖学术期刊 Nature 发表了题为:Pauli-limit violation and re-entrant superconductivity in moir graphene 的研究论文。这是这位95…

计算机网络(十一)-数据链路层-流量控制

一.流量控制 1.1 较高的发送速度和较低的接收能力的不匹配,因此流量控制也是数据链路层的一项重要工作。 1.2 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。 1.3 数据链路层流量控制手段:接收方收不下就不回复确认。 传…

H5常用拖放事件解析

在用户拖放HTML元素中,可能会触发如下表所示的事件: 事件 事件源 描述 ondragstart 被拖动的HTML元素 开始拖动操作时触发该事件 ondrag 被拖动的HTML元素 拖动过程中会不断地触发该事件 ondragend 被拖动的HTML元…

加强原始创新和基础研究的前提:三项破解之策

来源:国家智库 作者:刘益东,系中国科学院自然科学史研究所研究员世界科技史证明,谁拥有了一流创新人才、拥有了一流科学家,谁就能在科技创新中占据优势。当前,我国科技发展正进入以原始创新、基础研究为主…

计算机网络(十二)-信道划分介质访问控制-信道复用

一.传输数据的两种链路 点对点链路:两个相邻节点通过一个链路相连,没有第三者。应用PPP协议,常用于广域网。广播式链路:所有主机共享通信介质。早期的总线以太网、无线局域网、常用于局域网。典型的拓扑结构:总线型、星型(逻辑总…

KlayGE游戏引擎

From KlayGE游戏引擎, post address http://www.klayge.org/about/features/转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/about/features/ 概览 KlayGE是用于下一代游戏的一个完整的游戏开发框架。它是API无关的插件式结构,提供了很…

深度学习领域有哪些瓶颈?

来源:知乎 编辑:深度学习与计算机视觉深度学习近年来成为计算机领域最耀眼的明星,衍生出许多实际的应用,主要是在推理与决策等方面取得了突破。然而深度学习如何在超越图像、语音及自然语言处理方面做出更多成绩,比如…

Codeforces Round #462 (Div. 2), problem: (C) A Twisty Movement (求可以转一次区间的不递增子序列元素只有1,2)...

题目意思&#xff1a; 给长度为n&#xff08;n<2000&#xff09;的数字串&#xff0c;数字只能为1或者2&#xff0c;可以将其中一段区间[l,r]翻转&#xff0c;求翻转后的最长非递减子序列长度。 题解&#xff1a;求出1的前缀和&#xff0c;2的后缀和&#xff0c;以及区间[i,…

计算机网络(十三)-数据链路层-动态分配信道

一.动态分配信道 也称动态媒体接入控制/多点接入&#xff0c;特点是信道并在用户通信时固定分配给用户。 轮询访问介质访问控制: -令牌传递协议随机访问介质访问控制:所用用户可随机发送信息&#xff0c;发送信息时占全部宽带。 -ALOHA协议 -CSMA协议 -CSMA/CD协议 -CSMA/CA协…

元宇宙大热后将陷低潮, 虚实互联网更准确, 2030前后才可能全面热启

作者&#xff1a;DCCI*未来智库、未来实验室专家胡延平来源&#xff1a;今日头条3个判断、3个野心、技术要件6个瓶颈&#xff1b;虚实互联网这个概念元宇宙信徒听起来有些扎心但真实恰当......扎克伯格称Facebook要从社交转型为一家元宇宙公司的专访瞬间刷屏&#xff0c;将去年…