【信安数基】数论篇(一):整除
【信安数基】数论篇(一):整除
文章目录
- 【信安数基】数论篇(一):整除
- 0x00 整除符号
- 1. 对符号的定义
- 2. 符号本身有以下性质
- 0x01 取余
- 对符号的定义
- 0x02 素数的四个定理
- 0x03 公因子
- 1. 对符号的定义
- 2. 符号本身的性质
- 辗转相除法
- 0x04 连分数
- 0x05 算术基本定理
- 1. 两个前置定理
- 2. 算数基本定理
- 3. 标准分解式的性质
- (1) 正因子的数量
- (2) 与最大公约数和最小公倍数的关系
- 0x05 梅森素数和费马素数
- 1. 完全数
- 2. 梅森数和梅森素数
- 3. 费马数和费马素数
0x00 整除符号
1. 对符号的定义
设a,b∈Za, b \in Za,b∈Z,b≠0b \ne 0b=0,如果存在q∈Zq \in Zq∈Z使得a=qba=qba=qb:
- 称a可以被b整除,记作b|a(读作b整除a)
- a是b的倍数,b是a的因子(约数/除数)
注意
- 在b|a中,允许a = 0,不允许b = 0
- 整除关系是通过整数的乘法定义的,不是通过除法定义的
- 整除符号表达的是两个整数之间的关系
2. 符号本身有以下性质
向前的传递性:如果b|a且c|b,则c|a
b∣ab|ab∣a且b∣cb|cb∣c ↔ 对任意m,n∈Zm, n \in Zm,n∈Z,有b∣am+cnb|am+cnb∣am+cn
如果a≠ba \ne ba=b,且b∣ab|ab∣a,则KaTeX parse error: Undefined control sequence: \abs at position 1: \̲a̲b̲s̲{b} ≤ \abs{a}
方便用于换算的性质:
- b|a 这个关系,与其正负无关(b|a可推知-b|a, b|-a, |b| | |a|)
- 若b∣ab|ab∣a,则b∣acb|acb∣ac
- 设c≠0c \ne 0c=0,则b∣a↔bc∣acb|a ↔ bc | acb∣a↔bc∣ac
- 如果a∣bca|bca∣bc,a和b互素,那么a∣ca|ca∣c
0x01 取余
对符号的定义
设a和b是任意整数且b > 0,则存在唯一一对整数q和r,使得:
a=qb+r,0≤r<ba = qb+r,0\le r<b a=qb+r,0≤r<b
其中,a称为被除数,b称为商,r称为余数
在编程中,用%
或者mod
来表示取余(取模)运算,也就是a % b = r
或者a mod b = r
0x02 素数的四个定理
- 素数有无穷多个
- 对任意正整数n,存在素数p满足 n<p≤n!+1n < p \le n! + 1n<p≤n!+1
- 如果整数n≥2n \ge 2n≥2,那么在n!+2n! + 2n!+2与n!+nn! + nn!+n之间必定没有素数
- 如果n为合数,则n必有素因子p满足:p≤np \le \sqrt{n}p≤n
有这样一个Eratosthenes质数筛法用来筛素数:
要寻找不超过x的所有质数,只需要列出2到x的所有整数,再找出小于√ x的所有质数,接下来把这些质数的倍数全部删去,剩下的数全部都是质数。
代码实现(C语言):
#include<stdio.h>
#include<stdlib.h>
#include<math.h>int main() {int n;int *isPrime;scanf("%d", &n);isPrime = (int*)malloc((n + 1) * sizeof(int));for(int i = 2; i <= n; i++) isPrime[i] = 1;for(int i = 2; i <= sqrt(n); i++) {if(isPrime[i]) {for(int j = i + i; j <= n; j += i) isPrime[j] = 0;}}//输出筛出的所有素数for(int i = 2; i <= n; i++) {if(isPrime[i]) printf("%d, ", i);}
}
0x03 公因子
1. 对符号的定义
最大公因子:
- 设a1a_1a1, a2a_2a2, …, ana_nan是n个不全为零的整数,如果整数d是其中任何一个数的因子,就称d是a1a_1a1, a2a_2a2, …, ana_nan的公因子.
- 如果d是a1a_1a1, a2a_2a2, …, ana_nan的公因子中最大的一个,就称d为最大公因子,记作(a1a_1a1, a2a_2a2, …, ana_nan)或者gcd(a1a_1a1, a2a_2a2, …, ana_nan)
- 如果(a1a_1a1, a2a_2a2, …, ana_nan) = 1,则称a1a_1a1, a2a_2a2, …, ana_nan互素
最小公倍数
- 设a1a_1a1, a2a_2a2, …, ana_nan是n个整数,如果m是这n个数中每一个数的倍数,则m称为这个n个数的一个公倍数
- 公倍数中最小的正整数称为最小公倍数,记作[a1a_1a1, a2a_2a2, …, ana_nan]
2. 符号本身的性质
设 a, b,c 是三个不全为零的整数,且a=bq+ca = bq + ca=bq+c(注意:这里并未标明c的范围,因此这个式子未必展示了一个取模运算的过程),其中q是整数,则有(a,b)=(b,c)(a, b) = (b, c)(a,b)=(b,c)
对于两个正整数a和b,存在两个整数m和n,使得(a,b)=ma+nb(a, b) = ma + nb(a,b)=ma+nb
m和n的值可以通过辗转相除法回代求出(a, b)后回代求出唯一的一组,不知道是否有其他满足条件的m和n。、
不知道“a与b的最大公因数是t与“存在整数m和n使得t=ma+nbt = ma + nbt=ma+nb”是否互为充要条件,只知道前者是后者的充分条件
如果整数a, b, c满足c∣ac|ac∣a且c∣bc|bc∣b,则c∣(a,b)c|(a, b)c∣(a,b)
整数a和b互素的充要条件是存在整数x, y,使xa+yb=1xa + yb = 1xa+yb=1
方便用于换算的性质
(ac,bc)=(a,b)c(ac, bc) = (a, b)c(ac,bc)=(a,b)c
如果(a1a_1a1, a2a_2a2) = d2d_2d2, (d2d_2d2, a3a_3a3) = d3d_3d3, …, (dn−1d_{n-1}dn−1, ana_nan) = dnd_ndn,则(a1a_1a1, a2a_2a2, …, ana_nan) = dnd_ndn
[a1a_1a1, a2a_2a2] = m2m_2m2, (m2m_2m2, a3a_3a3) = m3m_3m3, …, (mn−1m_{n-1}mn−1, ana_nan) = mnm_nmn,则(a1a_1a1, a2a_2a2, …, ana_nan) = mnm_nmn
a与b互素时,[a,b]=ab[a, b] = ab[a,b]=ab
[a,b](a,b)=ab[a, b](a, b)=ab[a,b](a,b)=ab
如果m是a, b的任一公倍数,则[a,b]∣m[a, b]|m[a,b]∣m(拓展:如果m是a1a_1a1, a2a_2a2, …, ana_nan的公倍数,则[a1a_1a1, a2a_2a2, …, ana_nan]|m)
显而易见地,两个数除以它们的最大公因子后得到的数一定互质:
(a(a,b),b(a,b))=1(\frac{a}{(a,b)},\frac{b}{(a,b)})=1 ((a,b)a,(a,b)b)=1
辗转相除法
代码实现(Java)
public static int factor(int a, int b) {if(a == b) return a;if(a < b) {int c = a;a = b;b = c;}while(a > 0) {int c = a % b;if(c == 0) {return b;} else {a = b;b = c;}}return 0;}
0x04 连分数
0x05 算术基本定理
1. 两个前置定理
设p为质数且p|ab, 则p|a与p|b至少有一个成立
[ 推广 ]: 设p为质数且p|a1a_1a1a2a_2a2…ana_nan, 其中a1a_1a1, a2a_2a2, …, ana_nan是n个整数, 则 a1a_1a1, a2a_2a2, …, ana_nan中至少有一个整数可以被p整除设a1a_1a1, a2a_2a2, …, ana_nan, c是整数, 如果对于任意aia_iai, 满足(aia_iai, c) = 1, 那么(a1a_1a1a2a_2a2…ana_nan, c) = 1
但是无法逆推回去
2. 算数基本定理
任何大于1的整数都可以表示成质数的乘积, 且不考虑乘积顺序的情况下表达式唯一
推论:任何大于1的整数n都可以唯一的表示为
n=p1a1p2a2…psas,i=1,2,…,sn = p_1^{a_1}p_2^{a_2}\dots p_s^{a_s},i=1, 2,\dots,s n=p1a1p2a2…psas,i=1,2,…,s
这个式子称为n的标准分解式
衍生定理: 整数d是n的正因子的充要条件为:
d=p1β1p2β2…psβs,ai≥βi≥0,i=1,2,…,sd = p_1^{\beta_1}p_2^{\beta_2}\dots p_s^{\beta_s},a_i \ge\beta_i\ge0, i=1, 2,\dots,s d=p1β1p2β2…psβs,ai≥βi≥0,i=1,2,…,s
3. 标准分解式的性质
(1) 正因子的数量
如果用τ表示正因子的个数, 则有:
τ(n)=τ(p1a1)τ(p2a2)…τ(psas)=(a1+1)(a2+1)…(as+1)\tau(n)=\tau(p_1^{a_1})\tau(p_2^{a_2})\dots\tau(p_s^{a_s})=(a_1+1)(a_2+1)\dots(a_s+1) τ(n)=τ(p1a1)τ(p2a2)…τ(psas)=(a1+1)(a2+1)…(as+1)
(2) 与最大公约数和最小公倍数的关系
a=p1a1p2a2...psasb=p1β1p2β2...psβs(a,b)=p1γ1p2γ2...pnγn,γi=min(ai,βi)[a,b]=p1δ1p2δ2...pnδn,δi=max(ai,βi)a=p_1^{a_1}p_2^{a_2}... p_s^{a_s}\\ b=p_1^{\beta_1}p_2^{\beta_2}... p_s^{\beta_s}\\ (a, b)=p_1^{\gamma_1}p_2^{\gamma_2}... p_n^{\gamma_n},\gamma_i=\min(a_i,\beta_i)\\ [a,b]=p_1^{\delta_1}p_2^{\delta_2}... p_n^{\delta_n},\delta_i=\max(a_i,\beta_i)\\ a=p1a1p2a2...psasb=p1β1p2β2...psβs(a,b)=p1γ1p2γ2...pnγn,γi=min(ai,βi)[a,b]=p1δ1p2δ2...pnδn,δi=max(ai,βi)
0x05 梅森素数和费马素数
1. 完全数
σ(n)\sigma(n)σ(n)表示正整数n的所有正因子之和
如果σ(n)=2n\sigma(n) = 2nσ(n)=2n,称正整数n为完全数
完全数的算法:设正整数n的标准分解式为n=∏i=1spiαin=\prod_{i=1}^sp_i^{\alpha_i}n=∏i=1spiαi
则其正因子之和为:
σ(n)=∏i=1s(pi0+pi1+pi2+⋯+piαi)=∏i=1spiαi+1−1pi−1\sigma(n)=\prod_{i=1}^s(p_i^0+p_i^1+p_i^2+\dots+p_i^{\alpha_i})=\prod_{i=1}^s\frac{p_i^{\alpha_i+1}-1}{p_i-1} σ(n)=i=1∏s(pi0+pi1+pi2+⋯+piαi)=i=1∏spi−1piαi+1−1
2. 梅森数和梅森素数
定理:如果2n−12^n-12n−1是素数,则n是素数,反之则未必
形如2p−12^p-12p−1的数叫梅森数,记作Mp=2p−1M_p=2^p-1Mp=2p−1
当MpM_pMp为素数时,称之为梅森素数
设MnM_nMn是梅森素数,则2n−1Mn2^{n-1}M_n2n−1Mn是偶完全数,且没有其他偶完全数存在。
换句话说,偶完全数一定可以写成2n−1Mn2^{n-1}M_n2n−1Mn的形式
3. 费马数和费马素数
如果n是非负整数,则称Fn=22n+1F_n=2^{2^n}+1Fn=22n+1为费马数
FnF_nFn为素数时,称FnF_nFn为费马素数
任意两个不同的费马数都是互质的。
形如2m+12^m+12m+1的素数一定是费马素数
也就是说如果2m+12^m+12m+1是素数,则存在整数n,使得m=2nm=2^nm=2n
【信安数基】数论篇(一):整除相关推荐
- 【信安数基】数论篇(二):同余
[信安数基]数论篇(二):同余 文章目录 [信安数基]数论篇(二):同余 0x00 同余的概念和性质 1. 符号的定义 2. 同余符号本身的性质 3. 同余式之间的关系 a. 总纲 b. 推论式 3. ...
- NJUPT 《信安数基》第 11 章解题攻略
NJUPT <信安数基>多项式环和有限域解题攻略 注:本文章适合学习信息安全数学基础的同学们考前突击,不适用于数学系专业的同学.里面有些内容可能对于数学系来说是不严谨的,但对于信息安全专业 ...
- NJUPT 《信安数基》第 10 章证明题攻略
NJUPT <信安数基>环和域证明题攻略 注:本文章适合学习信息安全数学基础的同学们考前突击,不适用于数学系专业的同学.里面有些内容可能对于数学系来说是不严谨的,但对于信息安全专业为了应付 ...
- 信安数基Z/nZ的含义
信安数基Z/nZ的含义 z/nz表示这样一个集合(群),它的元素也是集合,这些集合是:属于z且除以n余0的所有数,属于z且除以n余1的所有数,属于z且除以n余2的所有数,--属于z且除以n余n-1的所 ...
- 信安小白,一篇博文讲明白数字证书和PKI(公钥基础设施)
数字证书 系列博文 前言 一.数字证书 二.CA(Certification Authority)认证 2.1 CA认证信息 2.2 CA结构 2.3 一般的证书产生流程 2.4 完整流程 三.PKI ...
- 信安小白,一篇博文讲明白上传漏洞——获得shop靶机的Webshell
实验环境:Win7 上传漏洞--获得shop靶机的Webshell 系列博文 前言 Webshell--脚本攻击工具 1. Webshell 工具举例 2. 如何获得Webshell 3. 上传检测 ...
- 信安小白,一篇博文讲明白数字签名
数字签名 系列博文 案例剖析--密码算法的运用 数字签名 1.1 Hash算法--信息摘要 1.2 数字签名和Hash算法相结合 1.3 加密和数字签名结合 1.4 PGP邮件加密(举例) PGP 报 ...
- 西电《网络空间安全数学基础》 网安数基
西电网络空间安全数学基础<第一章:线性系统与矩阵乘法> 文章目录 讲在前面 章节脉络 第一章 线性系统与矩阵乘法 概述 一.线性反馈移位寄存器(LFSR)的引入 1.1 移位寄存器: 1. ...
- 信奥中的数学 数论篇 相关资料汇总(2022.07.07)
数论入门书籍推荐 数论入门书籍推荐_dllglvzhenfeng的博客-CSDN博客_数论入门应该看什么书 数学女孩系列书籍 数学女孩系列书籍_dllglvzhenfeng的博客-CSDN博客 信息学 ...
最新文章
- 素数p阶群乘法循环群啥意思_抽象代数2-3 群元素的阶和循环群
- 车窗上为啥总有一些小黑点?没想到居然藏着大作用!
- 只能输入正整数 已经常用的正则表达式
- c# webservice的简单示例
- java log4j基本配置及日志级别配置详解,java基础面试笔试题
- 将js对象转化为树形结构
- 用libtommath实现RSA算法
- 交换机 路由器 OSI7层模型
- 百度编辑器UEditor源码模式下过滤div/style等html标签
- Tcl Tutorial 笔记 ·ubuntu命令行运行tcl 命令
- 【Matlab学习笔记】【函数学习】cat函数
- 二分类数据集_玩转UCI心脏病二分类数据集 领学课笔记
- 最新计算机操作员高级试题,计算机操作员高级考试试题
- sql分页查询越往后越慢
- 如何Word中修改Normal样式模板
- 如何建立风险分析模型
- 1.8版道士装备取向与PK方法
- 聚类算法及其模型评估指标【Tsai Tsai】
- 苹果手机有护眼模式吗_玩手机眼睛疼?你需要开启护眼模式~
- (CRON) info (No MTA installed, discarding output