数学学习

数论项目

适合初学者的自上而下学习项目

从 3 个适合初学者的数论项目中选择一个。选择一个项目,只学习该项目所需的数学知识。每个项目都包含按周分解的详细说明,包括代码示例和分步说明。

项目选项

选择一个项目开始学习

构建简单的加密系统 🔐

创建一个使用模运算加密和解密消息的程序。从简单的凯撒密码逐步进阶到高级的迷你 RSA 加密。

Learning Path

凯撒密码 → 仿射密码 → 迷你 RSA

Time Required

2-3 周(每周 5 小时)

Topics Covered
模运算最大公约数模逆素数性质
Week-by-Week Breakdown

第 1 周:凯撒密码

先构建它,然后学习数学。破解它以理解安全性。

第 1-2 天:先构建它

加密:将每个字母移动 3 位。'HELLO' → 'KHOOR'。编写代码 - 暂时不用担心数学。

第 3-4 天:现在学习数学

这是模运算:(H + 3) mod 26。学习:什么是 'mod'?练习:计算 17 mod 5,23 mod 7。

第 5-7 天:破解它

尝试所有 26 种可能的移位。学习:为什么这不安全?

第 2 周:仿射密码(更难)

使用公式,学习为什么有效,并实现解密。

第 1-2 天:使用公式

加密:(ax + b) mod 26。示例:a=5, b=8。'HELLO' → ?

第 3-4 天:学习为什么有效

为什么必须 gcd(a, 26) = 1?学习:使用欧几里得算法求 GCD。练习:求 gcd(15, 26),gcd(5, 26)。

第 5-7 天:解密

需要找到模逆。学习:扩展欧几里得算法。练习:求 5 mod 26 的逆。

第 3 周:迷你 RSA

使用小数字的 RSA,学习欧拉函数,实现完整的 RSA。

第 1-3 天:使用小数字的 RSA

给定:p = 61, q = 53, n = 3233, e = 17。加密消息 m = 123:c = (123^17) mod 3233 = ?

第 4-5 天:学习数学

为什么将两个素数相乘?什么是欧拉函数 φ(n)?学习:当 n = pq 时的 (p-1)(q-1)。

第 6-7 天:实现完整的 RSA

生成密钥。加密/解密。理解为什么它是安全的。

解决'可整除性侦探'问题 🔍

构建一个程序,解决诸如找出缺失数字等谜题,并使用可整除性规则和校验位算法验证信用卡号和 ISBN 等实际数字。

Learning Path

可整除性规则 → 校验位算法 → 通用验证器

Time Required

2 周(每周 4 小时)

Topics Covered
可整除性规则模运算校验位算法
Week-by-Week Breakdown

第 1 周:可整除性规则

学习 9 的可整除性,其他规则(2、3、4、5、6、8、9、10、11),并构建求解器。

第 1 天:问题

数字 45_72 能被 9 整除。缺失的数字是什么?

第 2-3 天:学习 9 的可整除性

规则:数字之和必须能被 9 整除。为什么?学习 mod 9 运算。练习:10 道类似问题。

第 4-5 天:其他可整除性规则

2、3、4、5、6、8、9、10、11 的可整除性。学习模式。练习:混合问题。

第 6-7 天:构建求解器

def find_missing_digit(number_string, divisor): # 您的代码在这里

第 2 周:校验位(实际应用)

信用卡(Luhn 算法)、ISBN 号码,并构建通用验证器。

第 1-2 天:信用卡(Luhn 算法)

信用卡:4532 1488 0343 6467。它有效吗?学习算法。实现它。使用真实卡号(最后一位)进行测试。

第 3-4 天:ISBN 号码

图书 ISBN:0-306-40615-?。计算校验位。学习 ISBN-10 算法。使用 mod 11。实现它。

第 5-7 天:构建通用验证器

def validate(number, algorithm): # 支持:Luhn、ISBN、UPC 等

素数探索器 🔢

创建一个程序,查找素数,高效测试素性,并可视化有趣的素数模式和关系。

Learning Path

查找素数 → 测试大素数 → 探索素数模式

Time Required

2-3 周(每周 4 小时)

Topics Covered
素数性质素性测试素数模式
Week-by-Week Breakdown

第 1 周:查找素数

暴力方法、优化,并实现埃拉托斯特尼筛法。

第 1-2 天:暴力方法

def is_prime(n): # 检查 n 是否能被 2 到 n-1 之间的任何数字整除。先写这个。

第 3-4 天:优化

只检查到 √n。为什么这有效?学习:如果 n = a × b,其中一个 ≤ √n。

第 5-7 天:埃拉托斯特尼筛法

找到所有小于 1,000,000 的素数。学习算法。实现它。可视化模式。

第 2 周:测试大素数

费马测试、米勒-拉宾测试,测试超大数字。

第 1-3 天:费马测试

561 是素数吗?测试:2^560 mod 561 = ? 学习费马小定理。实现测试。发现它可能被欺骗(卡迈克尔数)。

第 4-7 天:米勒-拉宾测试

更可靠的素性测试。用于实际密码学。实现它。测试超大数字(100+ 位)。

第 3 周:素数模式

孪生素数、素数间隙,可视化模式。

第 1-3 天:孪生素数

找到像 (11, 13), (17, 19) 这样的对。是否有无限多个?(未解决!)可视化它们。

第 4-7 天:素数间隙

连续素数之间的距离。绘制间隙。寻找模式。

快速入门指南

紧急速成课程,立即开始学习

紧急 1 天速成课程 🚨

4 小时强化课程,涵盖:模运算基础、最大公约数和欧几里得算法、模逆,以及应用到您的问题。

Time Required

4 小时

Hour-by-Hour Breakdown

第 1 小时:模运算基础

时钟运算:15 mod 12 = 3,23 mod 7 = 2。练习 20 道题。

Try Playground

第 2 小时:最大公约数和欧几里得算法

逐步学习 gcd(48, 18)。练习 10 道题。

Try Playground

第 3 小时:模逆

使用扩展欧几里得算法找到 x,使得 (5x) mod 26 = 1。练习 10 道题。

Try Playground

第 4 小时:应用到您的问题

使用您学到的知识,解决您的具体问题,查找您需要的其他内容。