数论简介
该部分简单介绍数论基础,包括整除性,欧几里得(Euclid)算法和模算术。
1.整除性和除法
- 1.1 整除性
设a,b,m是整数,若a=mb,我们说非零整数b整除a,用b|a表示。
a是被除数,b是除数。
//摘自《密码编码学与网络安全》
我还以为整除性是什么高深的东西,其实就是小学里的整除而已,除完没余数。
性质:
a) 如果a|1,则a = 1/-1;
b) 如果a|b且b|a,则 a = b/-b;
c) 任意非零数b整除0;
d) 若a|b且b|c,则a|c;
e) 若b|g且b|h,则对任意整数m,n有b|(mg+nh);
f) 若b|g,则存在某个整数g1,使得g可写为g = bg1;
- 1.2 除法
给定任意正整数n和任意非负整数a,若用n除a,我们得到一个整数商q和一个整数余数r,他们服从下面关系:
a = qn + r (0<= r < n; q = 取下整(a/n))
//摘自《密码编码学与网络安全》
我又以为除法是什么高深的东西,其实就是小学里的除法而已。
2.欧几里得(Euclid)算法
欧几里得(Euclid)算法是求两个正整数最大共因子的简单过程。
//摘自《密码编码学与网络安全》
最大共因子
称c为a,b的最大共因子,若:
1)c是a,b的因子;
2)a,b的任何因子都是c的因子;
记作c = gcd(a,b)。
简单来说:能够同时整除a,b的最大整数。
//摘自《密码编码学与网络安全》a,b互素:a,b的唯一正共因子为1。
求最大共因子
数据结构学过辗转相除法,这地方讲了个欧几里得算法,我们来看看。
啊~看完之后才明白,欧几里得算法就是辗转相除算法,这里只不过是将其正确性做了一个证明:
3.模运算
- 定义:略。
- 性质:略。
- 模运算:略。
- 模运算性质:略。
4.修改的欧几里得算法
Euclid(a, b)
if b = 0 then
return a;
else
return Euclid(b, a mod b);
区别:欧几里得算法循环使用除法运算思想,修改的欧几里得算法循环使用取模运算思想。
5.扩展的欧几里得算法
ax + by = d = gcd(a, b);
性质:ax + by 的最小正整数等于gcd(a, b)。
e_gcd(a, b, x, y)
if( b == 0 ) then
x = 1;
y = 0;
return a;
end if
ans = e_gcd(b, a mod b, x, y);
temp = x;
x = y;
y = temp - a/b*y;
return ans;
end
详细推到移步大神博客: 扩展欧几里得算法详解
该部分对除法,模,最大共因子等进行简介,都是极为基础的数学知识点。