本文属于「数论」系列文章之一。这一系列着重于数论算法的学习和应用。由于内容随时可能发生更新变动,欢迎关注和收藏数论算法系列文章汇总目录一文以作备忘。此外,在本系列学习文章中,为了透彻理解数论知识,本人参考了诸多博客、教程、文档、书籍等资料。以下是本文的不完全参考目录,在后续学习中还会逐渐补充:

  • 数论算法,姜建国、臧明相编著,西安电子科技大学出版社

文章目录

  • 1. 素数的定义及性质

1. 素数的定义及性质

定义1.1.2 设整数 a≠0,±1a \ne 0, \pm 1a​=0,±1 ,如果它除了显然约数 ±1,±a\pm 1, \pm a±1,±a 外没有其他的约数,则称 aaa 为素数(或质数不可约数);若 a≠0,±1a\ne 0, \pm 1a​=0,±1 ,且 aaa 不是素数,则称 aaa 为合数
约定:本系列文章所说的素数一般指正整数。这是因为当 a≠0,±1a\ne 0, \pm 1a​=0,±1 时,a,−aa, -aa,−a 必同时为素数或合数,故由整除的性质知,对正素数成立的结论一般对负素数也成立。

定理1.1.1(1)大于 111 的最小正因数必是素数。
(2)nnn 是正整数,若对所有满足 2≤p≤n2\le p\le \sqrt{n}2≤p≤n​ 的 ppp 而言,有 p∤np\nmid np∤n ,则 nnn 是素数。
证明 (1)显然。
(2)反证法。若 nnn 是合数(数理逻辑中的假设前提),则存在 1<a≤b1< a\le b1<a≤b 使得 n=abn = abn=ab ,那么必有 2≤a≤n2 \le a \le \sqrt{n}2≤a≤n​(知 b=nab = \dfrac{n}{a}b=an​ ,则有 a≤b=naa \le b = \dfrac{n}{a}a≤b=an​ 即 a2≤na^2 \le na2≤n )且 a∣na \mid na∣n ,与已知条件矛盾。故 nnn 必是素数。

定理1.1.1(2)的一个应用,就是减少在素数判断时的运算量,提高判断效率。因为判断一个正奇数 n(n>2)n (n \gt 2)n(n>2) 的素性(即判断 nnn 是否为素数;大于 222 的偶数一定不是素数)的最简单、直观的方法之一就是穷举法。即用每个小于 nnn 的奇素数 qqq 试除 nnn ,当每个 q∤nq\nmid nq∤n 时则说明 nnn 是素数。而定理1.1.1(2)告诉我们,此时只需要对小于等于 n\sqrt{n}n​ 的奇素数 qqq 进行穷举即可。

定理1.1.2 素数有无穷多。(如何证明素数有无穷多个?知乎)
证明 反证法。

  • 假设只有有限个素数(注意:已约定素数一定是正整数),它们是 p1,p2,…,pkp_1, p_2, \dots, p_kp1​,p2​,…,pk​ 。
  • 考虑 a=p1p2…pk+1a = p_1p_2\dots p_k+1a=p1​p2​…pk​+1 ,易知 a>2a > 2a>2 且 a≠pi(i=1,2,…,k)a\ne p_i\ (i = 1, 2, \dots, k)a​=pi​ (i=1,2,…,k) ,所以 aaa 必是合数(aaa 不在假设的有限个素数中)。从而知必存在素数 ppp ,使得 p∣ap\mid ap∣a 。
  • 又由假设,知 ppp 为有限个素数之一且必等于某个 pjp_jpj​ ,于是 p=pjp = p_jp=pj​ 一定整除 p1p2…pkp_1p_2\dots p_kp1​p2​…pk​ 。
  • 根据性质1.1.3,有 p∣a−p1p2…pk=1p \mid a - p_1p_2\dots p_k = 1p∣a−p1​p2​…pk​=1 。由于 p=pj≥2p = p_j \ge 2p=pj​≥2 ,这一推论是不可能的,矛盾。
  • 因此,假设是错误的,即素数必有无穷多个。于是,aaa 可能是素数(此时 aaa 就是比 pkp_kpk​ 更大的素数)、也可能是合数……

设 p1=2,p2=3,p3=5,p4=7,p5=11,…p_1 = 2, p_2 = 3, p_3 = 5, p_4 = 7, p_5 = 11, \dotsp1​=2,p2​=3,p3​=5,p4​=7,p5​=11,… 是全体素数按大小顺序排成的序列,以及 ak=p1p2…pk+1a_k = p_1p_2\dots p_k + 1ak​=p1​p2​…pk​+1 ,直接计算可得:
a1=3,a2=7,a3=31,a4=211,a5=2311,a6=59⋅509,a7=19⋅97⋅277,a8=347⋅27953a9=317⋅703763,a10=331⋅571⋅34231\begin{aligned} &a_1 = 3, a_2 = 7, a_3 = 31, a_4 = 211, a_5 = 2311, \\ &a_6 = 59\cdot 509, a_7 = 19\cdot 97 \cdot 277, a_8 = 347 \cdot 27953 \\ &a_9 = 317 \cdot 703763, a_{10} = 331 \cdot 571 \cdot 34231 \end{aligned} ​a1​=3,a2​=7,a3​=31,a4​=211,a5​=2311,a6​=59⋅509,a7​=19⋅97⋅277,a8​=347⋅27953a9​=317⋅703763,a10​=331⋅571⋅34231​

不难发现,前五个 a1∼a5a_1 \sim a_5a1​∼a5​ 是素数,后五个 a6∼a10a_6 \sim a_{10}a6​∼a10​ 是合数,但 aka_kak​ 都有一个比 pkp_kpk​ 更大的素因数。

数论中目前还未解决的问题之一就是:不知道是否有无穷多个 kkk 使得 aka_kak​ 是素数,也不知道是否有无穷多个 kkk 使得 aka_kak​ 是合数。

【例1】求 303030 以内的素数。
解:利用定义1.1.2,直接逐个计算,可知 303030 以内的素数有:2,3,5,7,11,13,17,19,23,292, 3, 5, 7, 11, 13, 17, 19, 23, 292,3,5,7,11,13,17,19,23,29

【例2】试判断 127127127 的素性。
解:因为 11<127<1211 < \sqrt{127} < 1211<127​<12 ,故只需用奇素数 3,5,7,113, 5, 7, 113,5,7,11 试除 127127127 即可,可知 127127127 为素数。

由此可得到求 111 到 nnn 之间素数的一种有效算法—— Eratosthenes 埃利特斯拉筛法。具体来说,为了求出不超过正整数 nnn 的全部素数,只要在 111 到 nnn 的列表中删去 111 和不超过 nnn 的所有正合数,则剩下的数即为所求素数。

由定理1.1.1知,不超过 nnn 的正合数 aaa 必至少有一个素因数 ppp ,满足 2≤p≤a≤n2 \le p \le \sqrt{a} \le \sqrt{n}2≤p≤a​≤n​ ,故只要先求出不超过 n\sqrt{n}n​ 的全部素数 p1,p2,…,pkp_1, p_2, \dots, p_kp1​,p2​,…,pk​ ,并依此将 111 到 nnn 的列表中除了 p1,p2,…,pkp_1, p_2, \dots, p_kp1​,p2​,…,pk​ 本身以外的数中是「p1,p2,…,pkp_1, p_2, \dots, p_kp1​,p2​,…,pk​ 各自的倍数」的数全部删去,就等于删去了不超过 nnn 的全部正合数。然后再删去 111 ,剩下的正好就是不超过 nnn 的全部素数。

例如,欲求出不超过两位数的素数,先构造 111 到 999999 间正整数的列表,估计出 99<10\sqrt{99} < 1099​<10 ,然后求出小于 101010 的素数 2,3,5,72, 3, 5, 72,3,5,7 ,在列表中删去 111 ,再从中分别删去大于 2,3,5,72, 3, 5, 72,3,5,7 且为其倍数的数,即得全部两位数的素数。可知,没有删去的数有:
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,972, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, \\ 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 972,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97

共有 252525 个素数,它们就是不超过两位数的全部素数。若再从这 252525 个数出发,重复上述过程,就可以找出不超过 92292^2922(更准确的说是小于 1012101^21012 )的全部素数。

当然,数学过程和算法实现之间并不完全相同,学过埃式筛法的实现就会明白这一点。

【数论】第1章 整数的可除性(1) 整除概念与带余除法(2) 素数相关推荐

  1. 【数论】第1章 整数的可除性 第1节 整除概念与带余除法(3) 带余除法

    本文属于「数论」系列文章之一.这一系列着重于数论算法的学习和应用.由于内容随时可能发生更新变动,欢迎关注和收藏数论算法系列文章汇总目录一文以作备忘.此外,在本系列学习文章中,为了透彻理解数论知识,本人 ...

  2. 【数论】第1章 整数的可除性 第1节 整除概念与带余除法(1) 整除及其性质

    本文属于「数论」系列文章之一.这一系列着重于数论算法的学习和应用.由于内容随时可能发生更新变动,欢迎关注和收藏数论算法系列文章汇总目录一文以作备忘.此外,在本系列学习文章中,为了透彻理解数论知识,本人 ...

  3. 【数论】第1章 整数的可除性 第3节 最大公因数与辗转相除法(1) 最大公因数及其性质

    本文属于「数论」系列文章之一.这一系列着重于数论算法的学习和应用.由于内容随时可能发生更新变动,欢迎关注和收藏数论算法系列文章汇总目录一文以作备忘.此外,在本系列学习文章中,为了透彻理解数论知识,本人 ...

  4. 【数论】第1章 整数的可除性 第2节 整数的表示

    本文属于「数论」系列文章之一.这一系列着重于数论算法的学习和应用.由于内容随时可能发生更新变动,欢迎关注和收藏数论算法系列文章汇总目录一文以作备忘.此外,在本系列学习文章中,为了透彻理解数论知识,本人 ...

  5. 《Reids 设计与实现》第四章 整数集合和压缩列表

    <Reids 设计与实现>第四章 整数集合和压缩列表 文章目录 <Reids 设计与实现>第四章 整数集合和压缩列表 一.整数集合 1.简介 2.整数集合的实现 3.升级 4. ...

  6. n个1组成的整数能被2013整除c语言,求大神解算法,“编写程序,求n至少为多大时,n个1组成的整数能被2013 整除。”...

    编写程序,求n至少为多大时,n个1组成的整数能被2013 整除. 使用python黑科技: i = 1 while int('1' * i) % 2013: i += 1 print(i) 不使用黑科 ...

  7. 第二章 物理层 1 物理层的基本概念 [计算机网络笔记]

    第二章 物理层 1 物理层的基本概念 本笔记参考书目: 计算机网络(第8版)谢希仁 2021王道计算机网络视频公开课 本节重点: 物理层功能和作用(了解名词即可) 转载请注明文章来源! 物理层接口特性 ...

  8. 求n至少为多大时,n个1组成的整数能被2013整除?

    求n至少为多大时,n个1组成的整数能被2013整除? 思路:N对M取余,就是得出N不能整除的一部分,可以先把能整除N的一部分去掉,得到的数对N整除和本身整除结果是一样的. 案例:11除3等于3余2,那 ...

  9. Java基础算法题(01):判断101-200之间有多少个素数,并输出所有素数。 素数又叫质数,就是除了1和它本身之外,再也没有整数能被它整除的数。也就是素数只有两个因子。

    查看所有50道基础算法题请看: Java的50道基础算法题 import java.util.ArrayList; import java.util.List; public class Detect ...

最新文章

  1. 8软件遇到的问题及解决方法_问题解决8步法
  2. 一个AndroidStudio项目的目录
  3. 重写 隐藏 java_Java中方法的重写与成员变量的隐藏
  4. html入门moz a,css 让文字不被选中之-moz-user-select 属性介绍
  5. Typescript 学习笔记七:泛型
  6. UVa 208 - Firetruck (回溯)
  7. 高职学生如何成为编程高手
  8. 介绍一个功能强大的 Visual Studio Code 扩展 - Rest Client,能部分替代 Postman
  9. rm 给你一个反悔的机会
  10. [Android]关于IntentService
  11. 常用的服务器系统,常用的服务器操作系统
  12. python分类下取得所有子类_如何找到给定名称的类的所有子类?
  13. 团队作业7——Beta版本冲刺计划及安排
  14. 三年的总结(技术篇)
  15. cmake使用教(二) install的使用
  16. linux 指定jvm djava.library.path_JVM命令
  17. 阿里巴巴优酷视频增强和超分辨率挑战赛-持续更新
  18. 【微信小程序】flex布局
  19. 软件开发的需求文档如何去写
  20. Java中使用isAlphabetic()办法无法解决判断一个char是英文字母,该用别的方法解决

热门文章

  1. Bean Searcher
  2. 戒除手机滥用经验贴(第一周)
  3. 红外视频图像行人检测算法综述
  4. 射频功放学习之四分之一波长阻抗变换器
  5. 细数 java9搭配eclipse oxygen 版本的坑
  6. maya RedShift头发色彩显示插件 1.0 下载及教程
  7. 这些跨国巨头都来了...第二届进博会六大亮点抢先看!
  8. 【读书笔记】【WebKit技术内 幕(二)】Chromium Webkit资源加载与网络栈、DOM树、HTML解释器、影子DOM、CSS解释器和样式布局、网页层次与渲染、绘图上下文、
  9. ROS-基于简单势场算法编写的线型编队领航
  10. 怎么下载Adobe Flash Player上的​视​频​ ​-​ ​多​媒​体​ ​?