网络安全数论基础(1)欧几里得算法

一、先介绍一下整除性和带余除法

整除性

设a、b、m均为整数,若存在某个m使得a=mb成立,则称非零数b整除a。换言之,若b除a没有余数,则认为b整除a。b除a通常用b|a,我们说b是a的一个因子。
注:被除数÷除数=商。a除以b即a÷b。a÷b也可以说b除a。

一些简单的整数整除性质

(1)a|1,则a=±1
(2)若a|b且b|a,则a=±b
(3)任何不等于零的数整除0
(4)若a|b且b|c,则a|c
(5)对任意整数m,n,若b|g且b|h,则可得出b|(mg+nh)
(6)若b|g,则存在g₁,使得g可以表示为g=bg₁
若b|h,则存在h₁,使得h可以表示为h=b
h₁
所以mg+nh=mbg₁+nbh₁=b*(mg₁+nh₁),得出b整除mg+nh
(下面证明欧几里得会用到)

带余除法

对给定的任意一个正整数n和任意非负整数a,若用n除a,得到整数商q和整数余数r,则满足以下关系式。
a=qn+r,0≤r<n;(q是小于等于a|b的最大整数)
注:对于任意给定的任意a和正数n,总可以找到满足上述关系的q和r。在数轴上表示数时,a一定会落在轴上的某处。余数r通常称为剩余数。

二、欧几里得算法

欧几里得算法可以简单的求出两个正整数的最大公因子
注:一个简单的定义:两个整数是互素的,当且仅当它们只有一个正整数公因子1。在看完下面的内容后,其实就是gcd(a,b)=1。

最大公因子

对于整数a,b,m,若满足a=mb,则称非零整数b是a的一个因子。我们用gcd(a,b)来表示a和b的最大公因子。a和b的最大公因子是能同时整除a和b的最大整数。另外,定义gcd(0,0)=0。
更正式的描述是,正整数c称为a和b的最大公因子,如果:
(1)c是a和b的因子
(2)a、b的因子都是c的因子
另一个等效的定义是:gcd(a,b)=max{k,满足k|a且k|b}
注1:因为要求最大公因子必须是正数,所以有gcd(a,b)=gcd(-a,-b)=gcd(-a,b)=gcd(a,-b)=gcd(|a|,|b|)
注2:因为0可以被所有非零整数整除,所以gcd(a,0)=|a|

求最大公因子

欧几里得算法利用了gcd(a,b)=gcd(b,r).其中a÷b=q……r。那么,当r=0时,gcd(b,0)=|b|就求出了最大公因子。
那么,我们先举出两个例子,然后再来证明,为什么gcd(a,b)=gcd(b,r).
例1:求9和12的最大公因子
gcd(a,b)=gcd(b,r) 9÷12=0……9 gcd(9,12)=gcd(12,9)
gcd(a,b)=gcd(b,r) 12÷9=1……3 gcd(12,9)=gcd(9,3)
gcd(a,b)=gcd(b,r) 9÷3=0……0 gcd(9,3)=gcd(3,0)
而gcd(3,0)=3 所以9和12的最大公因子是3
例2:这次我们来算大一点的数,求1314和520的最大公因子
1314÷520=2…274 gcd(1314,520)=gcd(520,274)
520÷274=1……246 gcd(520,274)=gcd(274,246)
274÷246=1……28 gcd(274,246)=gcd(246,28)
246÷28=8……22 gcd(246,28)=gcd(28,22)
28÷22=1……6 gcd(28,22)=gcd(22,6)
22÷6=3……4 gcd(22,6)=gcd(6,4)
6÷4=1……2 gcd(6,4)=gcd(4,2)
4÷2=2……0 gcd(4,2)=gcd(2,0)
而gcd(2,0)=2 所以1314和520的最大公因子是2

gcd(a,b)=gcd(b,r)的证明

1)我们要求整数a和b的最大公因子d;因为上文我们说gcd(a,b)=gcd(|a|,|b|)且ab的顺序并不影响,所以我们不妨设a≧b>0
2)使用带余除法,易得b|a可以表示为:a=q₁b+r₁, 0≦r₁<b
3)1.若r₁=0,那么gcd(a,b)=gcd(b,r₁)=gcd(b,0)=|b|=b
2.若r₁≠0,d|r₁(因为d|a且d|b,所以d|a-q₁b,即d|r₁)
不妨设b和r₁的任意公因子为c,易得c|q₁b+r₁,即c|a,又c|b,所以c是a和b的公因子,又因为d是a和b的最大公因子,所以c≦d,所以d是b和r₁的最大公因子得证,即gcd(a,b)=gcd(b,r)

.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

⁡⁢⁡布莱克先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值