【信安数基】数论篇(一):整除

文章目录

  • 【信安数基】数论篇(一):整除
    • 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_1a1​a2a_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_1a1​a2a_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=p1a1​​p2a2​​…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β1​​p2β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=p1a1​​p2a2​​...psas​​b=p1β1​​p2β2​​...psβs​​(a,b)=p1γ1​​p2γ2​​...pnγn​​,γi​=min(ai​,βi​)[a,b]=p1δ1​​p2δ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=1s​piα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∏s​pi​−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

【信安数基】数论篇(一):整除相关推荐

  1. 【信安数基】数论篇(二):同余

    [信安数基]数论篇(二):同余 文章目录 [信安数基]数论篇(二):同余 0x00 同余的概念和性质 1. 符号的定义 2. 同余符号本身的性质 3. 同余式之间的关系 a. 总纲 b. 推论式 3. ...

  2. NJUPT 《信安数基》第 11 章解题攻略

    NJUPT <信安数基>多项式环和有限域解题攻略 注:本文章适合学习信息安全数学基础的同学们考前突击,不适用于数学系专业的同学.里面有些内容可能对于数学系来说是不严谨的,但对于信息安全专业 ...

  3. NJUPT 《信安数基》第 10 章证明题攻略

    NJUPT <信安数基>环和域证明题攻略 注:本文章适合学习信息安全数学基础的同学们考前突击,不适用于数学系专业的同学.里面有些内容可能对于数学系来说是不严谨的,但对于信息安全专业为了应付 ...

  4. 信安数基Z/nZ的含义

    信安数基Z/nZ的含义 z/nz表示这样一个集合(群),它的元素也是集合,这些集合是:属于z且除以n余0的所有数,属于z且除以n余1的所有数,属于z且除以n余2的所有数,--属于z且除以n余n-1的所 ...

  5. 信安小白,一篇博文讲明白数字证书和PKI(公钥基础设施)

    数字证书 系列博文 前言 一.数字证书 二.CA(Certification Authority)认证 2.1 CA认证信息 2.2 CA结构 2.3 一般的证书产生流程 2.4 完整流程 三.PKI ...

  6. 信安小白,一篇博文讲明白上传漏洞——获得shop靶机的Webshell

    实验环境:Win7 上传漏洞--获得shop靶机的Webshell 系列博文 前言 Webshell--脚本攻击工具 1. Webshell 工具举例 2. 如何获得Webshell 3. 上传检测 ...

  7. 信安小白,一篇博文讲明白数字签名

    数字签名 系列博文 案例剖析--密码算法的运用 数字签名 1.1 Hash算法--信息摘要 1.2 数字签名和Hash算法相结合 1.3 加密和数字签名结合 1.4 PGP邮件加密(举例) PGP 报 ...

  8. 西电《网络空间安全数学基础》 网安数基

    西电网络空间安全数学基础<第一章:线性系统与矩阵乘法> 文章目录 讲在前面 章节脉络 第一章 线性系统与矩阵乘法 概述 一.线性反馈移位寄存器(LFSR)的引入 1.1 移位寄存器: 1. ...

  9. 信奥中的数学 数论篇 相关资料汇总(2022.07.07)

    数论入门书籍推荐 数论入门书籍推荐_dllglvzhenfeng的博客-CSDN博客_数论入门应该看什么书 数学女孩系列书籍 数学女孩系列书籍_dllglvzhenfeng的博客-CSDN博客 信息学 ...

最新文章

  1. 素数p阶群乘法循环群啥意思_抽象代数2-3 群元素的阶和循环群
  2. 车窗上为啥总有一些小黑点?没想到居然藏着大作用!
  3. 只能输入正整数 已经常用的正则表达式
  4. c# webservice的简单示例
  5. java log4j基本配置及日志级别配置详解,java基础面试笔试题
  6. 将js对象转化为树形结构
  7. 用libtommath实现RSA算法
  8. 交换机 路由器 OSI7层模型
  9. 百度编辑器UEditor源码模式下过滤div/style等html标签
  10. Tcl Tutorial 笔记 ·ubuntu命令行运行tcl 命令
  11. 【Matlab学习笔记】【函数学习】cat函数
  12. 二分类数据集_玩转UCI心脏病二分类数据集 领学课笔记
  13. 最新计算机操作员高级试题,计算机操作员高级考试试题
  14. sql分页查询越往后越慢
  15. 如何Word中修改Normal样式模板
  16. 如何建立风险分析模型
  17. 1.8版道士装备取向与PK方法
  18. 聚类算法及其模型评估指标【Tsai Tsai】
  19. 苹果手机有护眼模式吗_玩手机眼睛疼?你需要开启护眼模式~
  20. (CRON) info (No MTA installed, discarding output

热门文章

  1. R语言-因子分析中因子综合得分求解
  2. Android反编译工具使用方法
  3. [编程题] 有趣的数字
  4. 转载:自动化测试金字塔与反模式
  5. 【数据处理与分析】电商订单数据清洗
  6. 物理层——奈氏准则和香农定理
  7. 程序员考试下午题知识点总结
  8. 基于php校园网站的开发,基于PHP的小学校园网站开发
  9. 使用计算机粘贴板的步骤,剪贴板怎么打开,手把手教你电脑剪贴板怎么打开
  10. 2021年腾讯服务器维护,2021年研究报告