首页 > 其他分享 >同余方程

同余方程

时间:2022-10-01 11:11:31浏览次数:45  
标签:方程 gcd times k2 因子 ax 同余

下文中 \(a/b\) 指整数除法,即 \(a=kb+r\) 那么 \(a/b=k\)。
常见转化(有启示意义)会用 \(\mathbf{mathbf}\) 加重显示。

1.Exgcd (扩展欧几里得算法)(求解二元一次不定方程/单个线性同余方程)

引理 1:\(gcd(a,b)=gcd(b,a \bmod b)\)

证明:

令 \(gcd(a, b) = g\),设 \(a=g \times k_1, b = g \times k_2\)。
那么 \(\mathbf{a \% b = (k1 \% k2) \times g}\)。

因为都有公因子 \(g\),所以 \(b\) 和 \(a \bmod b\) 之间一定有公因子 \(g\)。
要证最大公因数是 \(g\) 只需证 \(k1 \% k2\) 和 \(k2\) 互质。

反证法:假设它们之间有公因数 \(t>1\),设 \(k1 \% k2 = t \times q, k2 = t \times p\)。
那么 \(a = g \times (ktp+tq)\) 有因子 \(t\),同时 \(b = g \times tq\) 也有因子 \(t\),与假设矛盾。

故原命题成立。

现在我们要做的事情是解同余方程 \(ax \equiv k \pmod b\),其等价于二元一次不定方程 \(ax + by = k\)。

引理 2(即 exgcd 原理):上述方程对于 \(k | gcd(a, b)\) 总有整数解,否则总没有整数解。

证明:

第二句话显然成立,不论 \(x,y\) 取得什么值,\(ax+by\) 一定会有因子 \(g\)。

为了证明第一句话,并求出这个方程的解,我们考虑 \(k = gcd(a, b)\)。

我们已经证明出引理 \(1\),那么可以将 \(ax + by = gcd(a, b)\) 规约成另一个方程 \(bx' + (a\%b)y' = gcd(b, a \% b)\),方便递归计算:
我们现在假设求出了第二个方程的解,那么 \(bx' + (a - (a/b) \times b)y' = g\)
也即 \(ay' + b(x' - (a/b)y') = g\)
因此第一个方程的解为:
\(x = y'\)
\(y = x' - (a/b)y'\)

当 \(b=0\) 时,\(x=1,y=0\) 即函数出口,因此可以得出解。

当 \(k = k' \times gcd(a, b)\) 时,只需要将 \(x,y\) 的值都对应乘上 \(k\) 即可。

标签:方程,gcd,times,k2,因子,ax,同余
From: https://www.cnblogs.com/Zeardoe/p/16746924.html

相关文章

  • 解二元一次方程组
    康个题面先给定一个二元一次方程组,形如:\[\begin{cases}ax+by=c\\dx+ey=f\\\end{cases}\]\(x\),\(y\)代表未知数,\(a\),\(b\),\(c\),\(d\),\(e\),\(f\)为参数,求解\(x\)......
  • python 线性代数:解多元一次方程
    因为在程序化交易策略中使用了网格算法进行交易,因为在网格中想设置动态资源大小的问题,所以就想到使用抛物线的分布方法来对网格资金配置进行分配。比如我的网格最大值设置......
  • 数论:同余,逆元,求同余方程,翡蜀定理
    同余表示两个数模上另一个数相同;写作ax=b(modp),我们把ax=1(MODP) x称为a在p的逆元;求逆元就是求同余方程求同余方程使用扩展欧几里得法1intexgcd(inta,intb,......
  • P5656 【模板】二元一次不定方程 (exgcd)
    P5656【模板】二元一次不定方程(exgcd)\[ax+by=d\\ax_1+by_1=c\\x_1=\frac{x*c}{gcd(a,b)},y_1=\frac{y*c}{gcd(a,b)}\\对于最小正整数解有:x_1+\lambda\frac{b}{gcd......
  • [数值分析]埃特肯加速法求方程解Aitken!
    埃特肯加速法求方程解Aitken!importnumpyasnpimportmatplotlib.pyplotaspltdeff(x):returnx**3-x**2-1构造迭代函数\[\begin{aligned}x^{3}-x......
  • 关于一元二次方程分享
    莫老师教学通过化简后,只含有一个未知数(一元),并且未知数的最高次数是2(二次)的整式方程,叫做一元二次方程(quadraticequationwithoneunknown)。一元二次方程的一般形式是,......
  • 实例84 二分法求解方程
    #include<stdio.h>#include<math.h>#include<malloc.h>#include<stdlib.h>doubleFunc(double);intBisectRoot(double,double,double,double,double*,int,in......
  • 实例85 牛顿迭代法求解方程
    #include<stdio.h>#include<math.h>#include<stdlib.h>intFunction(double,double*,double*);intNewton(double*,double,int);intFunction(x,f,dy)dou......
  • 521 同余式 乘法逆元 费马小定理
    视频链接:#include<iostream>usingnamespacestd;typedeflonglongLL;inta,p;intquickpow(LLa,intb,intp){intres=1;while(b){if(b&1)......
  • 转自 民科吧 《物理学家的大罪之一,乱解微分方程》
    转自民科吧  《物理学家的大罪之一,乱解微分方程》    https://tieba.baidu.com/p/8032789266  ,   作者  @绝情冰河恋    人家民科吧的水......