欧几里德算法和扩展欧几里德算法

阅读数:103 评论数:0

跳转到新版页面

分类

数学

正文

1、欧几里德算法

欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 

定理:gcd(a,b) = gcd(b,a mod b)
 证明:a可以表示成a = kb + r,则r = a mod b
 假设d是a,b的一个公约数,则有
 d|a, d|b,而r = a - kb,因此d|r
 因此d是(b,a mod b)的公约数

假设d 是(b,a mod b)的公约数,则
 d | b , d |r ,但是a = kb +r 
 因此d也是(a,b)的公约数
 
 因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证。

2、模P乘法逆元

对于整数a、p,如果存在整数b,满足ab mod p =1,则说,b是a的模p乘法逆元。

定理:a存在模p的乘法逆元的充要条件是gcd(a,p) = 1

证明:
 首先证明充分性
 如果gcd(a,p) = 1,根据欧拉定理,a^φ(p) ≡ 1 mod p(φ(p) 表示 {0,1,...,p-1}中有多少整数与p互素),因此
 显然a^(φ(p)-1) mod p是a的模p乘法逆元。
 
 再证明必要性
 假设存在a模p的乘法逆元为b
 ab ≡ 1 mod p
 则ab = kp +1 ,所以1 = ab - kp
 因为gcd(a,p) = d 
 所以d | 1
 所以d只能为1

3、扩展欧几里德算法

扩展欧几里德算法是用来在已知a, b求解一组x,y使得ax+by = Gcd(a, b) =d(解一定存在,根据数论中的相关定理)。

(1)求解x,y方法的理解

设 a>b,

显然当 b=0,gcd(a,b)=a。此时 x=1,y=0;

$a\cdot b \not= 0$时,设置

$a\cdot x1 + b\cdot y1 = gcd(a,b)$,

$b\cdot x2+(a mod b)\cdot y2 = gcd(b,a mod b$

根据欧几里德原理:

$a\cdot x1 +b\cdot y1 = b\cdot x2+(a mod b)\cdot y2$

即$a\cdot x1 +b\cdot y1 = b\cdot x2 +(a-\dfrac{a}{b}*b)\cdot y2 = a\cdot y2+b\cdot x2 -(\dfrac{a}{b}*b \cdot y2)$

根据恒等定理:$x1 = y2; y1=x2-(\dfrac{a}{b}*y2)$

这样我们就得到了求解 x1,y1 的方法:x1,y1 的值基于 x2,y2.

上面的思想是以递归定义的,因为 gcd 不断的递归求解一定会有个时候 b=0,所以递归可以
  结束。

4、使用扩展欧几里德算法解决不定方程的办法

对于不定整数方程pa+qb=c,若 c mod Gcd(a, b)=0,则该方程存在整数解,否则不存在整数解。
  上面已经列出找一个整数解的方法,在找到p * a+q * b = Gcd(a, b)的一组解p0,q0后, /*p * a+q * b = Gcd(a, b)的其他整数解满足:
  p = p0 + b/Gcd(a, b) * t 
  q = q0 - a/Gcd(a, b) * t(其中t为任意整数)
  至于pa+qb=c的整数解,只需将p * a+q * b = Gcd(a, b)的每个解乘上 c/Gcd(a, b) 即可
  在找到p * a+q * b = Gcd(a, b)的一组解p0,q0后,应该是
  得到p * a+q * b = c的一组解p1 = p0*(c/Gcd(a,b)),q1 = q0*(c/Gcd(a,b)),p * a+q * b = c的其他整数解满足:
  p = p1 + b/Gcd(a, b) * t
  q = q1 - a/Gcd(a, b) * t(其中t为任意整数)
  p 、q就是p * a+q * b = c的所有整数解。 
  编程时 exgcd 更多用于求解“中国余数定理”相关知识 举个例子 比如n除以5余2 除以13余3 那么n最小是多少,所有的n满足什么条件?
  n(min)=42
  n=42+k*65

 

 



相关推荐

一、几何 1、直线没端点,没法有长度,可以无限延伸。 2、射线只有一个端点,没有长度,可以无限延伸,并且有方向。 3、线段有两个端点,可以测量长度。 4、两条直线相交成直角时,这两条直线叫做互相垂直,

第一章:实数 一、实数的分类

第一章:线段、角、相交线、平行线 一、直线:直线是几何中不加定义的基本概念,直线的两大特征是“直&rdquo

第一次数学危机(无理数的发现) 毕达哥拉斯是公元前五世纪古希腊的著名数学家与哲学家. 他曾创立了一个合政治-学术-宗教三位一体的神秘主义派别: 毕达歌拉斯学派. 由毕达歌拉斯提出的著名命题"万物皆数"

数学发展具有阶段性,因此研究者根据一定的原则把数学史分成若干时期. 目前学术界通常将数学发展划分为以下五个时期: 数学萌芽期(公元前600年前) 初等数学时期(公元前

加减 a+b=$a+b$, a-b=$a-b$,  a\times b=$a\times  b$, a\div b=$a\div b$ a\cdo

$\pi$代表了圆的周长与直径之比。简单说,e就是增长的极限,它的含义是单位时间内,持续的翻倍增长所能达到的极限值。 举个例子: 假

一、问题描述 在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四

1、基础与哲学  为了阐明数学基础,数学逻

$1+2+3+...+n=\dfrac{n(n+1)}{2}$ $1^2+2^2+...+n^2=\dfrac{n(n+1)(2n+1)}{6}$ 这个公式有两种证明