欧几里德与扩展欧几里德算法——密码学笔记(五)

一、欧几里德算法

又称辗转相除法,用于计算两个整数a,b的最大公约数。

基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)


整除:

若整数a除以非零整数b,商为整数,且余数为零,我们就说a能被b整除(或说b能整除a),a为被除数,b为除数,即b|a(“|”是整除符号),读作“b整除a”或“a能被b整除”。a叫做b的倍数,b叫做a的约数(或因数)。


证明(法一):

若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,所以d也是(a,b)的公约数;

因此,(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,即gcd(a,b)=gcd(b,r)。


证明(法二):

假设c是a,b的最大公约数,即c=gcd(a,b),则有a=mc,b=nc,其中m,n为正整数,且m,n互为质数;

由r=a mod b可知,r=a-qb,其中q是正整数,则r=a-qb=mc-qnc=(m-qn)c;

b=nc,r=(m-qn)c,且n,m-qn互质

(假设n,m-qn不互质,则n=xd,m-qn=yd,其中x,y,d都是正整数,且d>1,则a=mc=(yd+qn)c=(yd+qxd)c=(qx+y)dc,b=xdc,这时a,b的最大公约数变成dc,与前提矛盾,所以n,m-qn一定互质)

则gcd(b,r)=c=gcd(a,b)


二、扩展欧几里德算法

基本算法:对于不完全为0的非负整数a,b,必存在整数对x,y,使得gcd(a,b)=ax+by。

证明:

设a>b

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

2、ab!=0时,设

     a x1+b y1=gcd(a,b);b x2+(a mod b) y2=gcd(b,a mod b);

     根据朴素的欧几里德原理有gcd(a,b)=gcd(b,a mod b);

     则:a x1+b y1 =b x2+(a mod b)y2;

     即:a x1+b y1 =b x2+(a-(a/b)*b)y2=a y2+b x2-(a/b)+b y2;

     根据恒定定理得:x1=y2,y1=x2-(a/b)* y2;

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值