数论 欧几里得与扩展欧几里得
欧几里得算法:
求a,b的最大公约数
gcd(a,b)= gcd(b,a%b)
ll gcd(ll a,ll b)
{return b==0?a:gcd(b,a%b);
}
扩展欧几里得算法:
如果a,b是整数,一定存在x和y使得ax+by=gcd(a,b)
也就是ax+by=m的话,m一定是gcd(a,b)的倍数
假设当前我们在求的时a和b的最大公约数,而我们已经求出了下一个状态:b和a%b的最大公因数,并且求出了一组x1和y1使得 : b * x1+(a%b) * y1 = gcd
结论: x = y1 , y = x1 – a / b * y1
得到的是特解,如何由特解推出其他的整数解:
对于关于x,y的方程a * x + b * y = g 来说,让x增加b/g,让y减少a/g,等式两边还相等。
对于ax+by=c的一组解(x0,y0),则它的任意整数解都可以写成(x0+k * b1,y0+k * a1)其中 b1 = b / gcd(a,b), a1 = a/gcd(a,b).
我们就可以用 (x0 % b1 + b1 ) % b1得到它的最小正整数解了
此处x0= x * c / gcd(a,b)
#include<iostream>
#include<cstdio>
#include<cmath>using namespace std;int exgcd(int a,int b,int &x,int &y)//扩展欧几里得算法
{if(b==0){x=1;y=0;return a; //到达递归边界开始向上一层返回}int gcd=exgcd(b,a%b,x,y);int y1=y; //把x y变成上一层的int x1=x;y=x1-(a/b)*y1;x=y1;return gcd; //得到a b的最大公因数
}
数论 欧几里得与扩展欧几里得相关推荐
- 欧几里得与扩展欧几里得总结
欧几里得 来看看一个常见的\(gcd\)代码 int Gcd(a,b){return (b==0)?a:Gcd(b,a%b); } 入门的一个知识吧,但是你会证明吗? \(emmm\) 好吧我就只是背 ...
- 欧几里得和扩展欧几里得
别人总结的,很详细,http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html 欧几里得算法,就是人们常说的辗转相除法,比较好理 ...
- 【笔记】 欧几里得(扩展欧几里得)
欧几里得 本质:利用辗转相减法求最大公约数,即 gcd(a, b). 数学表达: 设 a > b ,则 gcd(a, b) = gcd(a-b, ...
- 乘法逆元之欧几里得和扩展欧几里得
乘法逆元 文章目录 乘法逆元 一.模运算的性质 二.除法的模运算 1.除法模运算 2.解决除法模运算问题 三.乘法逆元 1.定义 2.**逆元是干什么的呢** 四.求解逆元 1.费马小定理 2.扩展欧 ...
- 欧几里得、扩展欧几里得、同余
一.同余: 1.若整数a和整数b除以正整数m的余数相等,则称a,b模m同余,记作a≡b(mod m). 2.费马小定理:若p是质数,则对于任意整数a,有ap ≡a(mod p). 3.欧拉定理:若正整 ...
- 欧几里得,扩展欧几里得,孙子定理
欧几里得 这人是真的厉害! 辗转相除法 #include <iostream> #include <cstring> #include <algorithm>usi ...
- 数论读书笔记——欧几里得和扩展欧几里得
欧几里得: 欧几里得算法: 定理1:整数a≥b>0,令r0=a,r1=b如果我们做带余除法得到rj=r(j+1)q(j+1)+r(j+2),且0<r(j+2)<r(j+1),j=0, ...
- 欧几里得 推 扩展欧几里得
前言 本文讨论如何求下面方程的解(a,b已知): a x + b y = 1 ( x , y ∈ Z ) ax+by=1(x,y \in Z) ax+by=1(x,y∈Z) 首先,方程有没有可能无解? ...
- 欧几里得、扩展欧几里得和中国剩余定理
欧几里得算法.扩展欧几里得算法和中国剩余定理 欧几里得算法 求两个数a, b的最大公约数 g c d ( a , b ) gcd(a, b) gcd(a,b) 根据 g c d ( a , b ) = ...
最新文章
- 单片机外包公司可以去吗?学好单片机能接私活吗?
- 揭秘:一个月不摸鱼能写多少代码?
- 送书拉!给开发者们的几本书籍 |福利
- Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,
- php无限极菜单,无限极菜单的实现
- Java之杨辉三角的实现
- 在 React 工程中利用 Mota 编写面向对象的业务模型
- 日期的前端验证 jquery
- java多线程之计算数量
- 波动速读入门训练(含黄卡、曼陀螺使用方法)提供卡片
- springboot证书管理系统的设计与实现毕业设计源码162317
- 【无锡学院/南信大滨江学院】IOS快捷指令登陆校园网——Iphone12实测
- 程序员对老板说:老子,明天不上班!结果...
- mysql error 1677_MySQL slave error 1677
- 网页AB Testing的七个原则(半成品)
- python多项式拟合:np.polyfit 和 np.polyld
- Enter实现Tab键的功能
- android中的长按复制
- el-cascader 级联选器中实现任意级别都可选,且前两级别为必选
- 20款优秀的移动产品原型和线框图设计工具
热门文章
- 中国最神秘的一所大学,它只存在过8年,却成了永远的第一
- 春节特惠活动┃不只是舒适,简直是享受,Google公司用的腰靠,到底有什么秘密?...
- 如果生活中没有数学,那么。。。
- 你感兴趣的大学专业真相 | 16万人参与调查,看完80%都哭了
- ordersta在php中是什么意思,[求助]ststa中的几个问题
- nginx php oracle,第8天 ORACLE安装及NGINX整合PHP环境
- python关联分析sklearn_Python3利用pandas,sklearn进行关联度分析以及预测的demo
- twitter mysql_twitter-mysql改进点
- js获取int类型长度_js代码比较大小前需要把string转换int
- 初级Java开发面试必问项!!! 标识符、字面值、变量、数据类型,该学学了!