信息安全与数学基础-笔记-①整数的可除性

news2024/11/18 16:52:20

知识目录

  • 整除
  • 素数
  • 带余除法
  • 最大公因数(欧几里德算法)
  • 裴蜀等式
  • 最小公倍数
  • ❀标准分解式❀
    • 标准分解式求最大公因数
    • 标准分解式求最小公倍数

整除

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/388846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringMVC】SpringMVC程序开发

SpringMVC程序开发 文章目录SpringMVC程序开发:one:认识SpringMVC什么是SpringMVCMVC思想:two:获取请求参数创建SpringMVC项目建立路由连接获取请求参数获取urlEncoded格式参数获取表单标签参数获取Json格式参数获取URL中的参数上传图片获取请求信息获取请求header获取cookie创…

Linux -- 信号控制进程 Kill 命令 简引

Kill 命令 :给进程发送信号 :[rootfsw ~]# kill -l # 可以列出 当前所有的信号量 比较常用的就是 :1) SIGHUP 重新加载配置2) SIGINT 键盘中断^C 即 Ctrl C3) SIGQUIT 键盘退出9) SIGKILL 强制终止15) SIGTERM 终止(正…

『OPEN3D』点云表面重建

目录 1 点云法线一致性估计 2 点云的表面重建 1 Alpha shapes reconstruction 2 Ball pivoting reconstruction 3 poisson surface reconstruction 1 点云法线一致性估计 在点云处理的章节中已经介绍使用estimate_normals来生成点云的发现信息,但该方法通过拟合…

业务流程测试

用例设计主要问题主要问题存在于:1、测试点分析:逻辑性不强对于整个页面功能划分不清晰;不同测试点归类不清晰;不能形成相对固定的套路,书写耗费大量时间...2、测试用例:关于,要细致到什么程度&…

一个供参考的计算机的学习路线

本文是介绍如何成为一个Geek,一个真正的计算机高手。 适合有成为IT领域技术大牛的人参考。 写给大一新生和所有向深耕IT领域的人,避免走一些弯路。 仅代表个人想法,供批判性参考。 第一门入门的必备功课-语法与算法 什么是计算机&#xff1f…

力扣sql简单篇练习(二十二)

力扣sql简单篇练习(二十二) 1 上月播放的儿童适宜电影 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # Write your MySQL query statement belowSELECT titleFROM ContentWHERE kids_contentY AND content_typeMoviesAND c…

MYSQL性能分析,Explain

文章目录一、MYSQL常见瓶颈二、ExplainExplain是什么一、MYSQL常见瓶颈 CPU: CPU饱和IO:磁盘IO速度过慢。服务器的硬件性能瓶颈。 二、Explain Explain是什么 使用explain关键字可以模拟优化器执行sql查询语句,从而知道mysql如何处理你的…

Python 随机漫步

目录 1. 创建 RandomWalk 类 2. 选择方向 3. 绘制随机漫步图 4. 总结 本篇博客将使用 Python 来生成随机漫步数据,在使用 Matplotlib 以引人注目的方式将这些数据呈现出来。 随机漫步 是这样行走得到的路径:每次行走都是完全随机的、没有明确…

跨域问题以及Ajax和Axios的区别

文章目录1. 同源策略2. 同源策略案例3. 什么是跨域4. 跨域解决方法4.1 Ajax的jsonp4.2 CORS方式4.3 Nginx 反向代理5. Axios 和 Ajax 的区别6. Axios 和 Ajax 的区别及优缺点6.1 Ajax:6.1.1 什么是Ajax6.1.2 Ajax的原理6.1.3 核心对象6.1.4 Ajax优缺点6.1.4.1 优点&…

大白话+画图 从源码角度一步步搞懂ArrayList和LinkedList的使用

1.说说ArrayList 1.基本原理 ArrayList,原理就是底层基于数组来实现。 01.基本原理: 数组的长度是固定的,java里面数组都是定长数组,比如数组大小设置为100,此时你不停的往ArrayList里面塞入这个数据,此…

Warshall算法求传递闭包及Python编程的实现

弗洛伊德算法-Floyd(Floyd-Warshall)-求多源最短路径,求传递闭包 Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法, 与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大…

minikube搭建Kubernetes环境

前言 Kubernetes 一般都运行在大规模的计算集群上,管理很严格,Kubernetes 充分考虑到了这方面的需求,提供了一些快速搭建 Kubernetes 环境的工具。 minikube 它是一个“迷你”版本的 Kubernetes,自从 2016 年发布以来一直在积极地…

Lesson 8.1 决策树的核心思想与建模流程

文章目录一、借助逻辑回归构建决策树1. 决策树实例2. 决策树知识补充2.1 决策树简单构建2.2 决策树的分类过程2.3 决策树模型本质2.4 决策树的树生长过程2.5 树模型的基本结构二、决策树的分类与流派1. ID3(Iterative Dichotomiser 3) 、C4.5、C5.0 决策树2. CART 决策树3. CHA…

minio安装配置和使用(一)

minio官网https://www.minio.org.cn 从官网获得安装文件。官网提供了Binary、RPM、DEB三种方式安装minio。 Binary方式我在我的测试环境中没有测试通过,按官网方式下载执行会报错如下: 查了下这个错误提示,似乎跟内存有关。 改用RPM方式安…

HCIP第一个实验

实验要求与实验拓扑子网划分分析将骨干链路看成一个整体,路由器后的2个环回地址先看成一个,最后再进行拆分。计算得出,一共需要划分为6个子网段,取三位。再将每一条网段,按照题目要求进行划分最后完成子网划分。子网划…

进行嵌入式C语言编程调试的通用办法

总结了一下调试我们嵌入式C程序的一些基本的办法和思想,供大家学习参考: 打印日志:在代码中添加打印语句,输出变量值、函数调用等信息,以便在程序运行时观察程序执行情况。 断点调试:在代码中添加断点&…

【编程实践】用 go 语言实现 B+ 树

文章目录 用 go 语言实现 B+ 树定义 B+ 树的结构B+ 树的插入操作函数B+ 树的查找小结用 go 语言实现 B+ 树 B+ 树是一种平衡的查找树,它可以有效组织存储大量的键值对,从而支持快速的插入和查找操作。 Go 语言可以用来实现 B+ 树,实现的思路是:首先,定义 B+ 树的结构,其…

【Linux】安装Linux操作系统具体步骤

1). 选择创建新的虚拟机 2). 选择"典型"配置 3). 选择"稍后安装操作系统(S)" 4). 选择"Linux"操作系统,"CentOS7 64位"版本 5). 设置虚拟机的名称及系统文件存放路径 6). 设置磁盘容量 7). 自定义硬件信息 8). 启动上述创建的新虚拟机…

【C++初阶】list的使用

大家好我是沐曦希💕 文章目录一、前言二、构造三、迭代器四、增删查改1.头插头删2.尾插尾删3.查找和插入4.删除五、其他成员函数1.排序和去重2.splice和remove3.resize一、前言 list本质是带头双向循环链表,本文只对list的一些常用接口进行说明&#xf…

Qt creator中操作QAction加入QToolBar

背景:个人笔记。我之前没有系统化学习过任何资料,使用很多工具都是按需出发,直接上手,遇到问题再研究的。所以会有一些弯路。本文言语中难免有对个人情绪的生动描述,希望不要影响读者心情,这只是我学习过程…