2.1.1 整除性
第2章 数论基础笔记
学习目标
- 理解整除性和带余除法的基本概念
- 学会利用欧几里得算法求最大公约数
- 理解模运算的定义和性质
- 掌握扩展欧几里得算法的应用
- 理解素数的定义和其性质
- 理解费马小定理和欧拉定理的内容
- 熟练使用欧拉函数计算
- 理解素性测试的关键点
- 学习中国剩余定理的原理与应用
- 掌握离散对数的概念
数论在加密算法中的应用
- 加密算法广泛应用数论知识,理解这些概念有助于深入学习密码学。
整除性和带余除法 (2.1)
我的理解:
整除性和带余除法
1. 整除性 (Divisibility)
整除性是数论中的一个基本概念。如果整数 �a 可以被整数 �b 除而没有余数,则称 �b 整除 �a。这可以表示为 �=��a=mb,其中 �m 是一个整数。比如,15 可以被 3 整除,因为 15=3×515=3×5。
理解整除性,可以从我们熟知的乘法和除法关系入手。想象你有 �a 个苹果,你需要将它们平均分给 �b 个人,如果每个人能够得到相同数量的苹果而且没有剩下的,那么我们就说 �b 整除了 �a。
2. 带余除法 (Division with Remainder)
任何两个整数的除法,都可以用带余除法表达,即如果 �a 不能被 �b 完全整除,除法会有一个余数。形式上,�a 被 �b 除,可以写成 �=��+�a=bq+r,其中 �q 是商,�r 是余数。
想象你有 �a 个同样的糖果,并开始分给 �b 个小朋友,每个小朋友分得相同数量的糖果后,剩下的糖果就是 �r。如果没有剩下的糖果,那说明 �b 整除了 �a。
3. 欧几里得算法 (Euclidean Algorithm)
欧几里得算法是一种有效计算两个整数的最大公约数(GCD)的方法。它基于这样一个事实:两个整数的最大公约数和它们的差的最大公约数相同。
可以将欧几里得算法想象成不断地进行带余除法,直到余数为零,最后非零余数即为最大公约数。
4. 扩展欧几里得算法 (Extended Euclidean Algorithm)
扩展欧几里得算法不仅计算最大公约数,还能找到整数 �x 和 �y,使得 ��+��=���(�,�)ax+by=gcd(a,b)。
这个算法的理解可以通过“走路”模型来帮助理解:想象在一个有格子的平面上,你可以朝东或北行走,�a 和 �b 表示向北或向东的步数。扩展欧几里得算法会告诉你如何走最少的步数以到达某个可以同时由 �a 步和 �b 步到达的位置。
5. 素数 (Primes)
素数是只有两个正因子(1 和自身)的数。理解素数的关键在于认识到它们是数论中的基石,因为任何大于1的整数都可以唯一地分解为素数的乘积。
可以将素数想象成数学中的“原子”,它们是构成其他所有数字的基本“元素”。
6. 素性测试 (Primality Testing)
素性测试是指定出一个数字是否为素数的算法。这个概念需要了解一些基本的测试方法,如试除法,以及更高级的算法,如米勒-拉宾素性测试。
理解素性测试的过程类似于寻找捷径,而不是对每个小于待测试数的整数都做除法,我们尝试找出更快的方法来确定一个数是否只能被1和它自己整除。
2.1.2 带余除法
定义与等式
- 带余除法: 对于任意非负整数 �a 和任意正整数 �n,除法可以表示为 �=��+�a=qn+r,其中:
- �q 是商,
- �r 是余数,
- 0≤�<�0≤r<n。
直观理解
- 在数轴上,给定的数 �a 总会位于某个 �n 的倍数附近。
- 从0开始,我们可以标记 �,2�,…,��n,2n,…,qn,直到 ��≤�qn≤a 且 (�+1)�>�(q+1)n>a。
- 这之间的距离 �r 就是除法的余数,确保了 �r 的唯一性。
例子
- 正数: �=11a=11, �=7n=7; 结果 11=1×7+411=1×7+4。这里 �=4r=4, �=1q=1。
- 负数: �=−11a=−11, �=7n=7; 结果 −11=(−2)×7+3−11=(−2)×7+3。这里 �=3r=3, �=−2q=−2。
图示理解
- 数轴: 对于任意 �a 和 �n,可以在数轴上找到对应的 �q 和 �r。
- 图例: 如图2.1(b),用 �=70a=70 和 �=15n=15 的例子,可以看到 70=4×15+1070=4×15+10。
数学表示
- 下界函数: �=⌊��⌋q=⌊na⌋ 表示 �a 除以 �n 的商的最大整数部分。
我的理解:
带余除法是数论中一个基本的概念,其核心在于理解任何整数除以另一个正整数时,可以得到一个商和一个余数。下面是如何理解这一节概念的步骤:
-
基本等式理解:
- 任何整数 �a 除以正整数 �n 的结果可以表示为两个数:商 �q 和余数 �r。
- 数学表达式为 �=��+�a=qn+r,其中 0≤�<�0≤r<n。
-
数轴上的表示:
- 想象一个数轴,从零开始标记 �n 的倍数,如 �,2�,3�,…n,2n,3n,…。
- 整数 �a 位于数轴上的某个点。如果 �a 是正数,它会位于零点的右侧;如果是负数,位于左侧。
- 找到满足 ��≤�<(�+1)�qn≤a<(q+1)n 的 �q 和 �r,其中 �q 是 �a 除以 �n 时能得到的最大整数倍数,而 �r 是 �a 到下一个 �n 的倍数之间的距离。
-
例子:
- 举个例子,如果你有 �=11a=11 个苹果,每盒放 �=7n=7 个,那么你可以填满一盒,并且还剩下 4 个苹果。所以,商 �=1q=1(填满的盒子数),余数 �=4r=4(剩下的苹果数)。
- 负数的情况也是类似的。如果 �=−11a=−11,使用 �=7n=7 去“分组”,你会发现需要向前数两个 �n 的倍数,并且还剩下 33 以补足到 −11−11。
-
概念实用性:
- 在现实生活中,带余除法用于确定分配物品时每组的数量和剩余物品数。
- 在数学和计算机科学中,这种除法用来计算模运算(即求余数),这是密码学、算法设计等领域的基础。
-
图形辅助:
- 查看书中提供的数轴图示,它将帮助你直观地看到数 �a 是如何被 �n 的整数倍所“捕捉”,并留下余数 �r。