信息安全与数学基础-笔记-①整数的可除性
整除
- a = bq
公式表达的意思:b整除a,a可被b整除
用符号表示:b | a
否则:a不能被b整除的话用下面这个符号
- 注意的点:
0是任何数的倍数
1是任何数的因子
一个数的本身即是自己的倍数,又是自己的因子
在该表达方式中
- ①正负都适用:因为能否整除这件事情就不受正负影响
- ②传递关系:a | c , c | b => a | b
解释:整除之间的关系,因为a能整除c,并且c能整除b,a>c>b那么a必然能整除b
举例:2,4,8就是对应这样一种关系 - ③独立规则:p | ab => p | a 或者 p | b
解释:显而易见,整除之间玩的就是倍数的关系,既然ab能被整除,所以ab之间必然有个与p是倍数关系,倍数再乘以一个无关要紧的数字,其本质就是将一个p的倍数再乘以一个倍数的意思。 - ④运算关系: c | a , c | b => c | a+b 或者c | a-b
解释:因为c能整除a / b,那么也就是说c与ab都有倍数关系,所以当我们将两个与c有倍数关系的进行相加减其最后的结果肯定也是与c车呈倍数关系。本质就是倍数之间的运算。
素数
- 1既不是素数也不是合数(合数:就是除了1和素数之外都是合数,在自然数中大部分都是合数)
- 素数的判断规则:
我们要判断一个n数字是否能被范围内[2, n \sqrt n n] 的素数整除,如果都不能则就是素数。
所以步骤就是:1:求出 n \sqrt n n,然后计算n是否能被[2, n \sqrt n n] 区间内的素数整除,如果都不能就表示是一个素数。
注意:这里很容易搞混,p和n到底谁是我要判断的数字?我们事实上要判断的是n是否为素数,所以是把n缩小范围,然后求2- n \sqrt n n内是素数的数能否整除n就能够足以判断出n是否为素数。当然在编程的时候我经常直接判断该范围内的数字都不能整除n就表示为n是素数。
所以n是我们要判断是否为素数的数字,p是我们找的用来判断是否是整除n的素数数字而已。
带余除法
- 定理如下:
r 是余数,也就是a 被 b 除 余数为r
解释:该定理引出了后面要介绍的欧几里得算法。
最大公因数(欧几里德算法)
在编程中求数之间的最大公因数一般用名字为:gcd(num1,num2…)的函数进行求解。
- 最大公因数表达形式:(a,b)= num
用括号表示数字之间的最大公因数为num,当num = 1的时候,即最大公因数为1时,我们称括号内的数字为互素(并不是说这里的数字为素数,只是说他们之间是互素关系) - 互素关系在信息安全与数学基础后面的应用非常重要
(a1,a2,a3…an)= 1称a1,a2,a3…an互素。注意的是,这不是两两互素,与两两互素关系不一样,而是括号内所有数字之间都互素。
- 因子规则:若 a | b 则 (a,b) = a
- 0规则: (0,b) = b
- 倍数规则:3(a,b) = (3a,3b)
- 传递规则:(a,b) = d, (d, c) = e => (a,b,c) = e
- 排他规则:已知c | ab 若(a,c) = 1 => c | b
解释:a与c是互素的,很明显只有c能整除b才符合c | ab - 缩减规则:d | a, d | b ,则可以 ↓
通过上述可以得出:ab同时除以他们的最大公因数时,也就是代表着他们共同能够被整除的数字已经去除掉了,因此他们变成互素,最大公因数为1
- 如何求最大公因数
①短除法
最后最大公因数就是2 × 3 = 6
② 欧几里德算法(也称:辗转相除法)
在带余除法中:a = qb + c
其中:(a,b) = (b,c)
因此利用该特性,一直循环到c = 0的时候,上一条公式的c即算出了他们的最大公因数。
例子:(173,46) = 2
裴蜀等式
将欧几里德算法逆向迭代回去即裴蜀等式。
若: (a,b) = sa+tb,其中s和t就是我们使用了欧几里德算法后,再逆向迭代回去得出的s和t,用来表示ab的线性关系。
举例:
- 当ab互素的时候,就有:sa + tb = 1
最小公倍数
当m为给出的数字的倍数,并且是这些数字中能写出的倍数之中最小的称为最小公倍数。
如何求最小公倍数?
- ①使用短除法后,2 × 3 × 28 × 15 = 2520,相比找最大公因数就是再多乘了两个数
- ②当给出的数字互素时候,那么最小公倍数就是这些数字相乘
比如:(a,b,c) = 1, [a,b,c] = a×b×c - ③设: a , b, 最大公因数为:(a,b)
在看上面的短除法中,其实是a,b都除了一个最大公因数,所以相当于除了两次最大公因数,但是最后又是将其2 和 3也算进去了,也就是说一共除了一次最大公因数,因此回到第三种方法的时候就是相当于总结了前面两种方法,直接将原来的两个数字出除一次最大公因数就是最小公倍数的结果。
❀标准分解式❀
例子:
100 = 2 × 2 × 5 × 5 =
2
2
2^2
22×
5
2
5^2
52
45 = 3 × 3 × 5 =
3
2
3^2
32
5
1
5^1
51
这就是将一个数分解为标准分解式
计算技巧:从2开始除,能一直除2就一直除,除不了就除3除4…以此类推,最后再统计每个数字出现的次数,次数就是该数字的次方。该数字出现0次的时候也将其算进去,也就是
n
0
n^0
n0。
标准分解式求最大公因数
以上述的100和45为例子,求(100, 45) = ?
计算出这两个数的标准分解式
100 =
2
2
2^2
22×
3
0
3^0
30×
4
0
4^0
40×
5
2
5^2
52
45 =
2
0
2^0
20×
3
2
3^2
32×
4
0
4^0
40
5
1
5^1
51
最大公因数就是找出每个数字对应标准分解式中:100中的2为底数的次方数为2,45中的2为底数的次方数为0,我们选择最小的次方数作为结果的乘积,同理100和45二者中,底数3最小的次方数也是0,4也是0,5是1,
所以100和45最大公因数为:
2
0
2^0
20×
3
0
3^0
30×
4
0
4^0
40×
5
1
5^1
51 = 5
标准分解式求最小公倍数
计算出这两个数的标准分解式
100 =
2
2
2^2
22×
3
0
3^0
30×
4
0
4^0
40×
5
2
5^2
52
45 =
2
0
2^0
20×
3
2
3^2
32×
4
0
4^0
40
5
1
5^1
51
最小公倍数和最大公因数正好相反,最大公因数在找数字作为乘积的时候是找次方数最小的那一个,那么在最小公倍数中我们要找的便是次方数最大的那个作为乘积。
最大公倍数:
2
2
2^2
22×
3
2
3^2
32×
4
0
4^0
40×
5
2
5^2
52 = 900
本文来自博客园,作者:竹等寒,转载请注明原文链接。