<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>素数 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/%E7%B4%A0%E6%95%B0/</link><description>Recent content in 素数 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 15 Oct 2019 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/%E7%B4%A0%E6%95%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>数学概念速查：素数 / 对数 / 离散数学</title><link>https://liangweidonggood.github.io/p/shu-xue-gai-nian-su-cha-su-shu-dui-shu-li-san-shu-xue/</link><pubDate>Tue, 15 Oct 2019 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/shu-xue-gai-nian-su-cha-su-shu-dui-shu-li-san-shu-xue/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/shu-xue-gai-nian-su-cha-su-shu-dui-shu-li-san-shu-xue/image/cover.jpg" alt="Featured image of post 数学概念速查：素数 / 对数 / 离散数学" /&gt;&lt;h1 id="数学概念速查素数--对数--离散数学"&gt;数学概念速查：素数 / 对数 / 离散数学
&lt;/h1&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;前置&lt;/strong&gt;：这篇写于 2019 年 10 月。我当时在梳理&amp;quot;程序员应该重新捡起来的数学基础&amp;quot;，从散落的笔记里挑出 3 个常被问到、却总记不清的：&lt;strong&gt;素数（Prime）&lt;/strong&gt;、&lt;strong&gt;对数（Logarithm）&lt;/strong&gt;、&lt;strong&gt;离散数学（Discrete Math）&lt;/strong&gt;。本文以&amp;quot;概念 + 代码 + 关联&amp;quot;三层结构呈现。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="为什么写这篇"&gt;为什么写这篇
&lt;/h2&gt;&lt;p&gt;工作 5 年之后，我发现自己读 RFC、看算法书、甚至 review 同事的代码时，常常被&lt;strong&gt;一个数学概念卡住 5 分钟&lt;/strong&gt;——不是不会，是&lt;strong&gt;太久没用了，定义都模糊了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;举 3 个真实例子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同事写的&amp;quot;质数判定&amp;quot;用了 &lt;code&gt;n/2&lt;/code&gt; 遍历，我一眼看出应该用 &lt;code&gt;sqrt(n)&lt;/code&gt;，但嘴上说不清&amp;quot;为什么遍历到 &lt;code&gt;sqrt&lt;/code&gt; 就够&amp;quot;&lt;/li&gt;
&lt;li&gt;看到数据库索引 &lt;code&gt;O(log n)&lt;/code&gt; 的描述，我脑子里浮现的是&amp;quot;&lt;code&gt;log&lt;/code&gt; 不是很大吗&amp;quot;——把&amp;quot;以 10 为底&amp;quot;和&amp;quot;以 2 为底&amp;quot;搞混了&lt;/li&gt;
&lt;li&gt;看到 Redis Cluster 的&amp;quot;16384 个 slot&amp;quot;用 CRC16 取模，我能跟着算，但说不出&amp;quot;为什么是 16384&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这 3 个例子背后分别站着 &lt;strong&gt;素数&lt;/strong&gt;、&lt;strong&gt;对数&lt;/strong&gt;、&lt;strong&gt;离散数学&lt;/strong&gt;。于是我决定写一篇&amp;quot;自己的速查手册&amp;quot;。&lt;/p&gt;
&lt;h2 id="3-个概念速查"&gt;3 个概念速查
&lt;/h2&gt;&lt;h3 id="1-素数prime--质数"&gt;1. 素数（Prime / 质数）
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：在大于 1 的自然数中，除了 1 和它自身外，&lt;strong&gt;无法被其他自然数整除&lt;/strong&gt;的数，否则称为合数（Composite）。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;素数序列：&lt;code&gt;2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, ...&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;判断定理&lt;/strong&gt;：若 &lt;code&gt;n&lt;/code&gt; 是合数，则 &lt;code&gt;n&lt;/code&gt; 必有&lt;strong&gt;一个小于等于 &lt;code&gt;sqrt(n)&lt;/code&gt; 的因子&lt;/strong&gt;。
因此遍历到 &lt;code&gt;sqrt(n)&lt;/code&gt; 即可。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;math&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 只遍历到 sqrt(n)，步长 2（跳过偶数）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Eratosthenes 筛法&lt;/strong&gt;：求 &lt;code&gt;n&lt;/code&gt; 以内所有素数的 O(n log log n) 算法。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sieve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;is_prime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;is_prime&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;程序员视角的素数用途&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;素数的作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Hash 表大小&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;选素数容量（如 &lt;code&gt;HashMap&lt;/code&gt; 内部 2 的幂次 + 二次扰动函数）减少 hash 冲突&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;密码学&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;RSA 算法的安全性基于&amp;quot;大整数分解的素因子很难找&amp;quot;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CRC 校验&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;选生成多项式时倾向用本原多项式（与素数相关）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;负载均衡&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;一致性 Hash 选素数虚拟节点数（150 / 200），让 hash 分布更均匀&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="2-对数logarithm"&gt;2. 对数（Logarithm）
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：如果 &lt;code&gt;a&lt;/code&gt; 的 &lt;code&gt;x&lt;/code&gt; 次方等于 &lt;code&gt;N&lt;/code&gt;（其中 &lt;code&gt;a &amp;gt; 0&lt;/code&gt; 且 &lt;code&gt;a ≠ 1&lt;/code&gt;），那么数 &lt;code&gt;x&lt;/code&gt; 叫做以 &lt;code&gt;a&lt;/code&gt; 为底 &lt;code&gt;N&lt;/code&gt; 的对数（logarithm），记作 &lt;code&gt;x = logₐN&lt;/code&gt;。其中 &lt;code&gt;a&lt;/code&gt; 叫做&lt;strong&gt;底数&lt;/strong&gt;（base），&lt;code&gt;N&lt;/code&gt; 叫做&lt;strong&gt;真数&lt;/strong&gt;（argument）。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;等价关系&lt;/strong&gt;：&lt;code&gt;a^x = N ⟺ x = logₐN&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对数恒等式&lt;/strong&gt;（程序员最常用的几个）：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;名称&lt;/th&gt;
					&lt;th&gt;公式&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;基本恒等式&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;logₐ1 = 0&lt;/code&gt;，&lt;code&gt;logₐa = 1&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;任何底数的 1 对数都是 0；底数自身取对数是 1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;反对数&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;a^(logₐN) = N&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;幂和对数是逆运算&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;乘积&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;logₐ(M·N) = logₐM + logₐN&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;乘变加&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;商&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;logₐ(M/N) = logₐM - logₐN&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;除变减&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;幂&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;logₐ(M^k) = k·logₐM&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;幂变乘&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;换底公式&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;logₐN = log_bN / log_ba&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;任意底之间转换&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;2 个最常见的底数&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;lg N&lt;/code&gt; = &lt;code&gt;log₂N&lt;/code&gt;：以 2 为底，&lt;strong&gt;计算机科学默认底数&lt;/strong&gt;（信息论、二叉树、二分查找）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ln N&lt;/code&gt; = &lt;code&gt;logₑN&lt;/code&gt;（自然对数）：以 e（≈ 2.71828）为底，&lt;strong&gt;微积分、复利、机器学习&lt;/strong&gt; 大量出现&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;计算机科学的时间复杂度速查&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;算法&lt;/th&gt;
					&lt;th&gt;复杂度&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;二分查找&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;O(log n)&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;n = 100 万时，log₂n ≈ 20 次&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;平衡二叉搜索树查找/插入&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;O(log n)&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;100 万节点约 20 层&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;堆排序 / 归并排序&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;O(n log n)&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;100 万数据约 2000 万次操作&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;哈希表查找（无冲突）&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;O(1)&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;与 n 无关&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Python 代码示例&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;math&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 3.0 → log₂8 = 3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 2.0 → log₁₀0 = 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 10.0 → 2^10 = 1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 1.0 → ln(e) = 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 时间复杂度直觉：n=100 万&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# ≈ 19.93 → 二分查找仅需 20 次&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# ≈ 2e7 → nlogn 排序&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="3-离散数学discrete-mathematics"&gt;3. 离散数学（Discrete Mathematics）
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：研究&lt;strong&gt;离散量&lt;/strong&gt;（discrete quantities）的结构及其相互关系的数学学科，是现代数学的一个重要分支。与连续数学（微积分、实分析）相对，离散数学的对象一般是&lt;strong&gt;有限个或可数个元素&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;为什么计算机专业必修&lt;/strong&gt;：
&amp;ldquo;通过离散数学的学习，不但可以掌握处理离散结构的描述工具和方法，为后续课程的学习创造条件，而且可以提高抽象思维和严格的逻辑推理能力。&amp;quot;（任一本离散数学教材的绪论）&lt;/p&gt;
&lt;p&gt;应用领域：程序设计语言、数据结构、操作系统、编译技术、人工智能、数据库、算法设计与分析、理论计算机科学基础。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四大支柱&lt;/strong&gt;（&amp;ldquo;集合、图、代数、逻辑&amp;rdquo;）：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;支柱&lt;/th&gt;
					&lt;th&gt;主要内容&lt;/th&gt;
					&lt;th&gt;程序员最熟悉的子领域&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;集合论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;集合及其运算、二元关系与函数、自然数及自然数集、集合的基数&lt;/td&gt;
					&lt;td&gt;SQL 的 &lt;code&gt;IN / EXISTS / JOIN&lt;/code&gt;、Redis 的 &lt;code&gt;SADD / SINTER&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;图论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;图的基本概念、欧拉图与哈密顿图、树、图的矩阵表示、平面图、图着色、支配集/覆盖集/独立集/匹配、带权图&lt;/td&gt;
					&lt;td&gt;最短路径（Dijkstra）、社交网络、K8s Service 依赖&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;代数结构&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;代数系统的基本概念、半群与独异点、群、环与域、格与布尔代数&lt;/td&gt;
					&lt;td&gt;密码学（模运算、有限域）、编译器优化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;数理逻辑&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;命题逻辑、一阶谓词演算、消解原理&lt;/td&gt;
					&lt;td&gt;数据库查询优化器、Prolog、约束求解器&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;集合论部分详解&lt;/strong&gt;（最容易和 SQL 关联）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;集合及其运算&lt;/strong&gt;：并（&lt;code&gt;UNION&lt;/code&gt;）、交（&lt;code&gt;INTERSECT&lt;/code&gt;）、差（&lt;code&gt;EXCEPT&lt;/code&gt;）、补、对称差（&lt;code&gt;A △ B&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;二元关系与函数&lt;/strong&gt;：映射、单射、满射、双射——这 3 个&amp;quot;射&amp;quot;是后续理解 hash、索引、SQL 关联的基础&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自然数及自然数集&lt;/strong&gt;：Peano 公理（5 条），不靠&amp;quot;自然数就是 0, 1, 2&amp;hellip;&amp;ldquo;这种直觉&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;集合的基数&lt;/strong&gt;：可数集 vs 不可数集；Hilbert 旅馆问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;图论部分详解&lt;/strong&gt;（最容易和算法关联）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;图的基本概念&lt;/strong&gt;：顶点（V）、边（E）、度（degree）、路径、连通性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;欧拉图 vs 哈密顿图&lt;/strong&gt;：前者&amp;quot;走遍所有边一次&amp;rdquo;（一笔画问题，源自 Königsberg 七桥问题），后者&amp;quot;走遍所有顶点一次&amp;rdquo;（TSP 旅行商问题）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;树&lt;/strong&gt;：特殊的无环连通图；二叉树、B 树、红黑树都属此家族&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图的矩阵表示&lt;/strong&gt;：邻接矩阵（&lt;code&gt;O(1)&lt;/code&gt; 查边、空间 &lt;code&gt;O(V²)&lt;/code&gt;）、关联矩阵、邻接表（&lt;code&gt;O(deg)&lt;/code&gt; 查边、空间 &lt;code&gt;O(V+E)&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图着色&lt;/strong&gt;：相邻顶点不能同色——编译器寄存器分配、时间表排课本质都是图着色&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;带权图&lt;/strong&gt;：边上带权值——Dijkstra 最短路径、Prim 最小生成树&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="三个概念的内在关联"&gt;三个概念的内在关联
&lt;/h2&gt;&lt;p&gt;如果一定要给&amp;quot;程序员应该理解这三个概念&amp;quot;找一个&lt;strong&gt;理由&lt;/strong&gt;，那就是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;素数&lt;/strong&gt; = &amp;ldquo;&lt;strong&gt;不可分解的最小单位&lt;/strong&gt;&amp;quot;——是密码学和 hash 算法的基石&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对数&lt;/strong&gt; = &amp;ldquo;&lt;strong&gt;乘除变加减、规模变线性&lt;/strong&gt;&amp;quot;——是时间复杂度的描述语言&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;离散数学&lt;/strong&gt; = &amp;ldquo;&lt;strong&gt;有限世界的全套工具箱&lt;/strong&gt;&amp;quot;——是计算机科学本身的母语&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;三者加起来，构成了&lt;strong&gt;计算机从业者的&amp;quot;数学底盘&amp;rdquo;&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="5-个常见误区"&gt;5 个常见误区
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;素数 = 质数 = 是不是 1&amp;rdquo;&lt;/strong&gt;：1 既不是素数也不是合数（1 只有 1 个因子，素数要求 2 个因子）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;log 默认以 10 为底&amp;rdquo;&lt;/strong&gt;：数学书以 10 为底（&lt;code&gt;lg&lt;/code&gt;），计算机科学以 2 为底（&lt;code&gt;log₂&lt;/code&gt;），微积分以 e 为底（&lt;code&gt;ln&lt;/code&gt;），三个底数别混&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;O(log n) 比 O(1) 慢很多&amp;rdquo;&lt;/strong&gt;：错。&lt;code&gt;log₂(10亿) ≈ 30&lt;/code&gt;，所以 &lt;code&gt;O(log n)&lt;/code&gt; 在工程上几乎等同于 &lt;code&gt;O(1)&lt;/code&gt;（常数 30）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;离散数学 = 离散事件数学&amp;rdquo;&lt;/strong&gt;：错。&amp;ldquo;离散&amp;quot;指&lt;strong&gt;离散量&lt;/strong&gt;（可数/有限），对应的是&lt;strong&gt;连续量&lt;/strong&gt;（微积分处理的实数连续区间）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;对数 = 减法&amp;rdquo;&lt;/strong&gt;：对数是&lt;strong&gt;乘除转加减&lt;/strong&gt;，不是减法本身&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="写在最后"&gt;写在最后
&lt;/h2&gt;&lt;p&gt;这一篇没有&amp;quot;实战代码&amp;rdquo;，更多是&lt;strong&gt;给自己打地基&lt;/strong&gt;。我后来每次被数学概念卡住，都会回到这篇过一遍——素数定义 → Eratosthenes 筛法 → 对数换底 → 图论七大概念，3 分钟过完，思路立刻清晰。&lt;/p&gt;
&lt;p&gt;如果你也是工作 3-5 年的程序员，常常被&amp;quot;这个数学概念是什么&amp;quot;打断思考节奏，&lt;strong&gt;强烈建议你也写一份自己的速查手册&lt;/strong&gt;——不一定要公开，写给未来的自己即可。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;下一步&lt;/strong&gt;：下一篇会写&amp;quot;算法复杂度速查表&amp;rdquo;——把 &lt;code&gt;O(1)&lt;/code&gt; 到 &lt;code&gt;O(n!)&lt;/code&gt; 的所有常见量级，用代码实测验证，并配上对应的真实算法例子。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;《离散数学及其应用》（Kenneth H. Rosen 著）—— 经典教材，集合/图/代数/逻辑四件套全覆盖&lt;/li&gt;
&lt;li&gt;《算法导论》（Cormen, Leiserson, Rivest, Stein 著）—— 素数、对数、时间复杂度的标准出处&lt;/li&gt;
&lt;li&gt;Python 官方文档 &lt;code&gt;math&lt;/code&gt; 模块：&lt;a class="link" href="https://docs.python.org/3/library/math.html" target="_blank" rel="noopener"
 &gt;https://docs.python.org/3/library/math.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-年后补遗ai-时代的素数--对数--离散数学新意义"&gt;6 年后补遗：AI 时代的&amp;quot;素数 / 对数 / 离散数学&amp;quot;新意义
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;本文写于 2019 年 10 月，&lt;strong&gt;6 年后回看，3 个老概念都有了&amp;quot;AI 时代&amp;quot;的新应用场景&lt;/strong&gt;。下面补全 2025-2026 年的视角。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="素数新应用后量子密码学"&gt;素数新应用：后量子密码学
&lt;/h3&gt;&lt;p&gt;2019 年 RSA 还在统治加密世界，&lt;strong&gt;2024-2025 后量子密码（Post-Quantum Cryptography, PQC）成为新焦点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NIST PQC 标准&lt;/strong&gt;（2024-08 发布）：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ML-KEM&lt;/strong&gt;（原 CRYSTALS-Kyber）—— 密钥封装&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ML-DSA&lt;/strong&gt;（原 CRYSTALS-Dilithium）—— 数字签名&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SLH-DSA&lt;/strong&gt;（原 SPHINCS+）—— 基于哈希的签名&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;这些算法的核心仍然依赖&lt;strong&gt;格密码（Lattice-based）&lt;/strong&gt; 与&lt;strong&gt;素数 / 有限域运算&lt;/strong&gt;——素数仍是密码学的基石&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024-2026 中国国产算法&lt;/strong&gt;：SM2 椭圆曲线（替代 RSA）、SM3 哈希、SM4 对称——&lt;strong&gt;等保 2.0 三级合规要求&lt;/strong&gt;所有政企系统支持&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;程序员视角：5 年后做&amp;quot;安全&amp;quot;相关项目，&lt;strong&gt;&amp;ldquo;素数&amp;quot;的概念仍然是入门必备&lt;/strong&gt;——但要补 PQC 的数学基础（格、向量空间、模运算）。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="对数新应用transformer-的对数级别复杂度"&gt;对数新应用：Transformer 的&amp;quot;对数级别&amp;quot;复杂度
&lt;/h3&gt;&lt;p&gt;2019 年我们说 &lt;code&gt;O(log n)&lt;/code&gt; 是&amp;quot;二分查找的复杂度&amp;rdquo;。&lt;strong&gt;2025 年 &lt;code&gt;O(n²)&lt;/code&gt; 才是大模型训练的核心&lt;/strong&gt;——但对数仍无处不在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Token 上下文长度&lt;/strong&gt;：主流 LLM 上下文从 4K → 32K → 128K → 1M（2024-2025）—— &lt;strong&gt;每翻一倍，显存/算力压力指数级增长&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Attention 机制&lt;/strong&gt;：标准 Attention 是 &lt;code&gt;O(n²)&lt;/code&gt;，2024-2026 各种&amp;quot;线性 Attention&amp;rdquo;（Performer / Linear Transformer / Mamba）的核心目标就是&lt;strong&gt;把 n² 压到 n·log(n) 或 n&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FlashAttention&lt;/strong&gt;（2022-2024）：把 GPU 显存从 &lt;code&gt;O(n²)&lt;/code&gt; 压到 &lt;code&gt;O(log n)&lt;/code&gt;，&lt;strong&gt;让 128K 上下文成为可能&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KV Cache 压缩&lt;/strong&gt;：基于对数的位运算，把推理时显存压到原来的 1/4&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;程序员视角：理解&amp;quot;为什么 Transformer 这么烧钱&amp;quot;，&lt;strong&gt;对数 / 复杂度分析就是起点&lt;/strong&gt;——这块是 2025 后端 + AI 工程师面试必问。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="离散数学新应用大模型--知识图谱--形式化验证"&gt;离散数学新应用：大模型 + 知识图谱 + 形式化验证
&lt;/h3&gt;&lt;p&gt;2019 年我说&amp;quot;离散数学 = 有限世界的工具箱&amp;quot;，&lt;strong&gt;2025 年这个工具箱直接喂给大模型&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RAG（检索增强生成）&lt;/strong&gt;：本质是&lt;strong&gt;集合论 + 关系代数&lt;/strong&gt;——文档 → 嵌入 → 集合查询 → Top-K&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识图谱&lt;/strong&gt;：用图论建模实体关系，&lt;strong&gt;大模型 + 知识图谱&lt;/strong&gt;成为 2024-2026 企业 AI 的标准架构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图神经网络（GNN）&lt;/strong&gt;：图论 + 深度学习的结合，&lt;strong&gt;药物发现、推荐系统、社交网络&lt;/strong&gt;都有应用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;形式化验证（Formal Verification）&lt;/strong&gt;：数理逻辑 + 自动定理证明，&lt;strong&gt;Lean 4 + Copilot&lt;/strong&gt; 2024-2025 在数学证明 + 代码验证上爆发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Z3 SMT Solver&lt;/strong&gt;：约束求解器（数理逻辑应用），&lt;strong&gt;程序分析、编译器优化、形式化验证&lt;/strong&gt;的核心&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;程序员视角：2024-2026 写&amp;quot;AI 应用&amp;quot;，&lt;strong&gt;&amp;ldquo;集合 / 图 / 逻辑&amp;rdquo; 是底层语言&lt;/strong&gt;——RAG 是集合操作、知识图谱是图、Chain-of-Thought 是逻辑推理。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="3-个老概念的新意义对照"&gt;3 个老概念的&amp;quot;新意义&amp;quot;对照
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;概念&lt;/th&gt;
					&lt;th&gt;2019 应用&lt;/th&gt;
					&lt;th&gt;2025-2026 应用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;素数&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Hash 表 / RSA&lt;/td&gt;
					&lt;td&gt;后量子密码（PQC） / SM 国密&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;对数&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;二分查找 / &lt;code&gt;O(log n)&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Attention 复杂度 / Token 预算 / KV Cache&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;离散数学&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;SQL / 算法分析 / 编译原理&lt;/td&gt;
					&lt;td&gt;RAG / 知识图谱 / GNN / 形式化验证&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="5-年前-vs-5-年后面试题的变化"&gt;5 年前 vs 5 年后：面试题的变化
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;2019 年面试常问&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;素数判定有几种优化？&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;为什么二分查找是 &lt;code&gt;O(log n)&lt;/code&gt;？&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;集合论与 SQL 的对应关系？&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2025-2026 年面试常问&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;后量子密码和 RSA 的数学基础有什么不同？&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Transformer 的 Attention 为什么是 &lt;code&gt;O(n²)&lt;/code&gt;？FlashAttention 怎么压到 &lt;code&gt;O(n log n)&lt;/code&gt;？&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;RAG 系统怎么用集合论优化 Top-K 召回？&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;知识图谱 Embedding 和 GNN 有什么关系？&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;5 年变化的核心&lt;/strong&gt;：&lt;strong&gt;3 个老概念都还在用，但应用场景从&amp;quot;系统内部&amp;quot;走向&amp;quot;AI 系统&amp;quot;&lt;/strong&gt;——素数在加密，对数在 LLM，离散数学在 RAG + 知识图谱。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="给想补数学基础的工程师的-2025-升级版书单"&gt;给&amp;quot;想补数学基础的工程师&amp;quot;的 2025 升级版书单
&lt;/h3&gt;&lt;p&gt;2019 年我推荐的是 Rosen《离散数学》+ CLRS《算法导论》。&lt;strong&gt;2025 年如果重写这个书单，我会加这 3 本&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;教材&lt;/th&gt;
					&lt;th&gt;主题&lt;/th&gt;
					&lt;th&gt;2025 价值&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;《Mathematics for Machine Learning》&lt;/strong&gt;（MML 书籍）&lt;/td&gt;
					&lt;td&gt;线性代数 + 概率 + 优化&lt;/td&gt;
					&lt;td&gt;入门 ML 必备数学&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;《信息论、推理与学习算法》&lt;/strong&gt;（David MacKay）&lt;/td&gt;
					&lt;td&gt;信息论 + 编码&lt;/td&gt;
					&lt;td&gt;理解 LLM 原理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;《Proofs from THE BOOK》&lt;/strong&gt;（Aigner, Ziegler）&lt;/td&gt;
					&lt;td&gt;数学证明美学&lt;/td&gt;
					&lt;td&gt;训练逻辑思维&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;外加 2 个&lt;strong&gt;在线免费资源&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3Blue1Brown 的&amp;quot;线性代数的本质&amp;quot;&lt;/strong&gt;（YouTube / B 站）—— 视觉化理解向量空间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIT 6.042J &amp;ldquo;Mathematics for Computer Science&amp;rdquo;&lt;/strong&gt;（OCW）—— 离散数学经典&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="写在最后6-年后我还想说"&gt;写在最后：6 年后我还想说
&lt;/h3&gt;&lt;p&gt;2019 年我说&amp;quot;工作 5 年后被数学卡住，是时候写速查手册&amp;quot;。&lt;strong&gt;6 年后我反而更想说&lt;/strong&gt;：&lt;strong&gt;速查手册不够用，要做&amp;quot;数学肌肉&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;速查&lt;/strong&gt;——解决&amp;quot;忘了定义&amp;quot;的问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;肌肉&lt;/strong&gt;——解决&amp;quot;看到新问题能立刻想到数学工具&amp;quot;的问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2025 年的工程师，&lt;strong&gt;&amp;ldquo;被数学卡住 5 分钟&amp;rdquo;&lt;/strong&gt; 和 &lt;strong&gt;&amp;ldquo;看到 AI 问题立刻想到线性代数&amp;rdquo;&lt;/strong&gt;，差距是巨大的。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;6 年前的我&lt;/strong&gt;：写完这篇继续 review 代码，偶尔翻一下。&lt;br&gt;
&lt;strong&gt;现在的我&lt;/strong&gt;：&lt;strong&gt;写完这篇立刻打开 3Blue1Brown 复习特征值&lt;/strong&gt;——因为上周 review 的 RAG 系统还在纠结 embedding 维度。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;数学不会变老，&lt;strong&gt;只是换了个地方等我们回来&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="参考资料2024-补充"&gt;参考资料（2024+ 补充）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://csrc.nist.gov/projects/post-quantum-cryptography" target="_blank" rel="noopener"
 &gt;NIST 后量子密码标准（FIPS 203/204/205）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/Dao-AILab/flash-attention" target="_blank" rel="noopener"
 &gt;FlashAttention 论文（2022-2024）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/state-spaces/mamba" target="_blank" rel="noopener"
 &gt;Mamba: Linear-Time Sequence Modeling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/microsoft/graphrag" target="_blank" rel="noopener"
 &gt;Microsoft GraphRAG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://leanprover.github.io/" target="_blank" rel="noopener"
 &gt;Lean 4 形式化证明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.3blue1brown.com/topics/linear-algebra" target="_blank" rel="noopener"
 &gt;3Blue1Brown 线性代数本质&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/" target="_blank" rel="noopener"
 &gt;MIT 6.042J Mathematics for CS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://mml-book.github.io/" target="_blank" rel="noopener"
 &gt;《Mathematics for Machine Learning》&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>离散数学与初等数论入门：素数、对数、集合与图论精要</title><link>https://liangweidonggood.github.io/p/lisan-shuxue-yu-chudeng-shulun/</link><pubDate>Fri, 15 Jan 2016 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/lisan-shuxue-yu-chudeng-shulun/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/lisan-shuxue-yu-chudeng-shulun/image/cover.jpg" alt="Featured image of post 离散数学与初等数论入门：素数、对数、集合与图论精要" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;背景&lt;/strong&gt;：程序员的数学基础课——素数判定、对数反运算、集合论、图论、代数结构、组合数学、数理逻辑。本文用 7 大离散数学分支 + 5 大数论核心 + 4 大图论应用，把&amp;quot;程序员必备数学&amp;quot;做一次系统梳理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why 2016 年&lt;/strong&gt;：2015-2016 是国内&amp;quot;程序员数学基础&amp;quot;觉醒期——LeetCode 中文站上线、《算法导论》第 3 版翻译、《数学之美》《程序员的数学》系列书热销。本文写给&amp;quot;想补数学基础的工程师&amp;quot;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一素数质数自然数的原子"&gt;一、素数（质数）：自然数的&amp;quot;原子&amp;quot;
&lt;/h2&gt;&lt;h3 id="11-定义"&gt;1.1 定义
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;素数（Prime）&lt;/strong&gt;：在大于 1 的自然数中，除了 1 和该数自身外，&lt;strong&gt;无法被其他自然数整除&lt;/strong&gt;的数；否则称为合数（Composite）。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="12-素数的-5-个性质"&gt;1.2 素数的 5 个性质
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;性质&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;唯一性&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;1 既不是素数也不是合数（特例）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;2 是唯一偶素数&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;其他素数都是奇数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;素数无穷&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;欧几里得 2000 多年前证明：素数有无穷多个&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;素数定理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;π(x) ~ x / ln(x)（x 越小越准，100 内有 25 个，1000 内有 168 个）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;算术基本定理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;任何大于 1 的整数都能唯一分解为素数乘积（如 12 = 2² × 3）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="13-程序员最常用的素数判定"&gt;1.3 程序员最常用的素数判定
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;math&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;素数判定：试除法 O(√n)&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 只需检查到 √n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;97&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;997&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;97&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;997&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;性能优化&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6k±1 优化：所有 &amp;gt;3 的素数都形如 6k+1 或 6k-1（因为 6k+0/2/3/4 必被 2/3 整除）&lt;/li&gt;
&lt;li&gt;Miller-Rabin：O(k log³n) 概率算法，大数判定（&amp;gt;10^18）首选&lt;/li&gt;
&lt;li&gt;AKS：O(log^6 n) 确定算法，2002 年发现，理论突破但实际慢&lt;/li&gt;
&lt;/ul&gt;

 &lt;/blockquote&gt;
&lt;h3 id="14-素数在程序员世界的应用"&gt;1.4 素数在程序员世界的应用
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;应用&lt;/th&gt;
					&lt;th&gt;原理&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;RSA 加密&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;大素数乘积难分解（密码学基石）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;哈希表大小&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;素数大小让哈希分布更均匀（避免聚集）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;布隆过滤器&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;多哈希函数选素数种子&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;一致性哈希&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;2^N 环设计避免素数依赖，但部分实现用素数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;雪花 ID&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;基于时间戳 + 序列号（与素数无关，但雪花的&amp;quot;位运算分配&amp;quot;思想类似）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="二对数指数的反函数"&gt;二、对数：指数的&amp;quot;反函数&amp;quot;
&lt;/h2&gt;&lt;h3 id="21-定义"&gt;2.1 定义
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;对数（Logarithm）&lt;/strong&gt;：是对&lt;strong&gt;求幂&lt;/strong&gt;的逆运算，正如除法是乘法的逆运算。
如果 a^x = N（a &amp;gt; 0，且 a ≠ 1），那么数 x 叫做&lt;strong&gt;以 a 为底 N 的对数&lt;/strong&gt;，记作 x = log_a(N)。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;名称&lt;/th&gt;
					&lt;th&gt;a（底数）&lt;/th&gt;
					&lt;th&gt;N（真数）&lt;/th&gt;
					&lt;th&gt;x（对数）&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;常用对数&lt;/td&gt;
					&lt;td&gt;10&lt;/td&gt;
					&lt;td&gt;100&lt;/td&gt;
					&lt;td&gt;2（因为 10² = 100）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;自然对数&lt;/td&gt;
					&lt;td&gt;e ≈ 2.718&lt;/td&gt;
					&lt;td&gt;7.389&lt;/td&gt;
					&lt;td&gt;2（因为 e² ≈ 7.389）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;二进制对数&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;3（因为 2³ = 8）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="22-程序员最常用的-3-个对数"&gt;2.2 程序员最常用的 3 个对数
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;math&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 自然对数（ln）：e 为底&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;7.389&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# 2.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 常用对数（lg）：10 为底&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log10&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# 2.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 二进制对数（lb）：2 为底（算法复杂度分析最常用！）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# 10.0（二分 10 次找到 1024 内的数）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="23-对数在算法分析中的-5-大应用"&gt;2.3 对数在算法分析中的 5 大应用
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;应用&lt;/th&gt;
					&lt;th&gt;例子&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;二分查找&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;O(log n)：100 万数据最多 20 次比较（log₂ 10⁶ ≈ 20）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;二叉树高度&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;n 个节点的平衡二叉树高度 = ⌈log₂ n⌉&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;堆/优先队列&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;插入/删除 O(log n)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;B+ 树索引&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;数据库索引查找 O(log n)（n 是记录数）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;归并排序&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;递归深度 O(log n)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="24-4-条核心对数运算法则"&gt;2.4 4 条核心对数运算法则
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;换底公式：log_a(b) = log_c(b) / log_c(a)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;对数幂：log(a^n) = n · log(a)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;对数乘积：log(a·b) = log(a) + log(b)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;对数商：log(a/b) = log(a) - log(b)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="三离散数学-7-大分支"&gt;三、离散数学 7 大分支
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;离散数学&lt;/strong&gt;（Discrete mathematics）是研究&lt;strong&gt;离散量&lt;/strong&gt;的结构及其相互关系的数学学科，是现代数学的一个重要分支。&lt;strong&gt;离散的含义是指不同的连接在一起的元素&lt;/strong&gt;，主要是研究基于离散量的结构和相互间的关系。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;它的对象一般是&lt;strong&gt;有限个或可数个元素&lt;/strong&gt;（连续数学研究的是实数区间这样的连续量）。&lt;/p&gt;
&lt;h3 id="31-离散数学在-cs-课程中的位置"&gt;3.1 离散数学在 CS 课程中的位置
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;程序设计语言
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;数据结构
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;操作系统
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;编译技术
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;人工智能
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;数据库
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;算法设计与分析
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;理论计算机科学基础
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;↑
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;都依赖 离散数学
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="32-7-大分支速览"&gt;3.2 7 大分支速览
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;分支&lt;/th&gt;
					&lt;th&gt;核心内容&lt;/th&gt;
					&lt;th&gt;程序员应用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;集合论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;集合运算、二元关系、函数、自然数集、基数&lt;/td&gt;
					&lt;td&gt;SQL JOIN、Map/Set 数据结构&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;图论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;图、欧拉/哈密顿图、树、矩阵、平面图、图着色&lt;/td&gt;
					&lt;td&gt;网络拓扑、依赖分析、社交网络&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;代数结构&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;半群、独异点、群、环、域、格、布尔代数&lt;/td&gt;
					&lt;td&gt;密码学、自动机理论&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;组合数学&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;组合存在性、计数公式、组合定理&lt;/td&gt;
					&lt;td&gt;算法复杂度、概率分析&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;数理逻辑&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;命题逻辑、一阶谓词演算、消解原理&lt;/td&gt;
					&lt;td&gt;形式化验证、AI 推理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;数论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;素数、同余、模运算、欧拉函数&lt;/td&gt;
					&lt;td&gt;RSA 加密、哈希、雪花 ID&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;计算模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;自动机、图灵机、可计算性&lt;/td&gt;
					&lt;td&gt;编译原理、算法理论&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="四集合论set-theory"&gt;四、集合论（Set Theory）
&lt;/h2&gt;&lt;h3 id="41-5-大核心概念"&gt;4.1 5 大核心概念
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;概念&lt;/th&gt;
					&lt;th&gt;符号&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;集合&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;{a, b, c}&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;元素的&lt;strong&gt;无序&lt;/strong&gt;整体&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;子集&lt;/td&gt;
					&lt;td&gt;A ⊆ B&lt;/td&gt;
					&lt;td&gt;A 的所有元素都在 B 中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;并集&lt;/td&gt;
					&lt;td&gt;A ∪ B&lt;/td&gt;
					&lt;td&gt;属于 A 或 B 的所有元素&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;交集&lt;/td&gt;
					&lt;td&gt;A ∩ B&lt;/td&gt;
					&lt;td&gt;同时属于 A 和 B 的元素&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;差集&lt;/td&gt;
					&lt;td&gt;A - B&lt;/td&gt;
					&lt;td&gt;属于 A 但不属于 B 的元素&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="42-程序员对应实现"&gt;4.2 程序员对应实现
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Java&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HashSet&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Arrays&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;3&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HashSet&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Arrays&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;5&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 并集&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;union&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HashSet&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;union&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// [1, 2, 3, 4, 5]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 交集&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;intersection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HashSet&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;intersection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;retainAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// [3]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 差集&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;difference&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HashSet&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;difference&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;removeAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// [1, 2]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- SQL：集合的并集（UNION）、交集（INTERSECT）、差集（EXCEPT）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table_a&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table_b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table_a&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;INTERSECT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table_b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table_a&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;EXCEPT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table_b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="43-集合论-3-大基础"&gt;4.3 集合论 3 大基础
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;主题&lt;/th&gt;
					&lt;th&gt;核心内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;集合及其运算&lt;/td&gt;
					&lt;td&gt;并、交、差、补、笛卡尔积&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;二元关系与函数&lt;/td&gt;
					&lt;td&gt;关系的性质（自反/对称/传递）、函数（单射/满射/双射）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;自然数与自然数集&lt;/td&gt;
					&lt;td&gt;皮亚诺公理、归纳法、超限归纳&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="五图论graph-theory"&gt;五、图论（Graph Theory）
&lt;/h2&gt;&lt;h3 id="51-6-大基本概念"&gt;5.1 6 大基本概念
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;概念&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;图的基本概念&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;顶点（V）、边（E）、邻接、度、路径&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;欧拉图&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;经过每条边恰好一次的回路（七桥问题）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;哈密顿图&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;经过每个顶点恰好一次的回路（旅行商问题）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;树&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;无环连通图，n 个顶点有 n-1 条边&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;图的矩阵表示&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;邻接矩阵、关联矩阵、距离矩阵&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;平面图&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;可画在平面上边不相交（欧拉公式 V-E+F=2）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="52-5-类图着色问题"&gt;5.2 5 类图着色问题
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;支配集：选出最少的顶点&amp;#34;监视&amp;#34;所有顶点
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;覆盖集：选出最少的边&amp;#34;覆盖&amp;#34;所有顶点
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;独立集：选出最多的顶点两两不相邻
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;匹配：选出最多的边两两不共享顶点
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;带权图：边上加权（最短路径、最小生成树）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="53-程序员最常用的-5-个图算法"&gt;5.3 程序员最常用的 5 个图算法
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;算法&lt;/th&gt;
					&lt;th&gt;应用&lt;/th&gt;
					&lt;th&gt;复杂度&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Dijkstra&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;最短路径（Google 地图）&lt;/td&gt;
					&lt;td&gt;O(V²) 或 O((V+E)logV)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Floyd-Warshall&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;全对最短路径&lt;/td&gt;
					&lt;td&gt;O(V³)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;A&lt;/strong&gt;*&lt;/td&gt;
					&lt;td&gt;启发式搜索（游戏寻路）&lt;/td&gt;
					&lt;td&gt;取决于启发函数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;BFS/DFS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;拓扑排序、连通分量&lt;/td&gt;
					&lt;td&gt;O(V+E)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Kruskal/Prim&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;最小生成树（网络布线）&lt;/td&gt;
					&lt;td&gt;O(E log E)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="54-图在程序员世界的-7-大应用"&gt;5.4 图在程序员世界的 7 大应用
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;应用&lt;/th&gt;
					&lt;th&gt;图模型&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;社交网络&lt;/td&gt;
					&lt;td&gt;用户=顶点，好友=边&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;互联网路由&lt;/td&gt;
					&lt;td&gt;路由器=顶点，链路=边&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;编译依赖&lt;/td&gt;
					&lt;td&gt;模块=顶点，import=边&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据库 JOIN&lt;/td&gt;
					&lt;td&gt;表=顶点，关联=边&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;知识图谱&lt;/td&gt;
					&lt;td&gt;实体=顶点，关系=边&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;任务调度&lt;/td&gt;
					&lt;td&gt;任务=顶点，依赖=边&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;推荐系统&lt;/td&gt;
					&lt;td&gt;用户-商品 二分图&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="六代数结构"&gt;六、代数结构
&lt;/h2&gt;&lt;h3 id="61-5-大基本结构"&gt;6.1 5 大基本结构
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;结构&lt;/th&gt;
					&lt;th&gt;性质&lt;/th&gt;
					&lt;th&gt;例子&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;半群&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;封闭 + 结合&lt;/td&gt;
					&lt;td&gt;正整数加法、字符串拼接&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;独异点（幺半群）&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;半群 + 单位元&lt;/td&gt;
					&lt;td&gt;整数加法（0 是单位元）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;群&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;独异点 + 逆元&lt;/td&gt;
					&lt;td&gt;整数加法、置换群&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;环&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;加法群 + 乘法半群&lt;/td&gt;
					&lt;td&gt;整数环、多项式环&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;域&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;环 + 乘法逆元&lt;/td&gt;
					&lt;td&gt;有理数域、有限域 GF(2ⁿ)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="62-4-个衍生结构"&gt;6.2 4 个衍生结构
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;结构&lt;/th&gt;
					&lt;th&gt;性质&lt;/th&gt;
					&lt;th&gt;例子&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;格&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;两个运算满足吸收律、结合律、交换律&lt;/td&gt;
					&lt;td&gt;幂集（按包含序）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;布尔代数&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;有补格&lt;/td&gt;
					&lt;td&gt;开关电路、SQL 谓词&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;代数系统&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;集合 + 运算 + 关系&lt;/td&gt;
					&lt;td&gt;自然数、整数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;半群/独异点/群/环/域/格&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;一层层严格&lt;/td&gt;
					&lt;td&gt;抽象代数主线&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="63-程序员最常用有限域-gf2"&gt;6.3 程序员最常用：有限域 GF(2⁸)
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# AES 加密用 GF(2^8) 域&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;gf_mult&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;GF(2^8) 上的多项式乘法（不可约多项式 x^8 + x^4 + x^3 + x + 1 = 0x11B）&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;^=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hi_bit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0x80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hi_bit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;^=&lt;/span&gt; &lt;span class="mh"&gt;0x1B&lt;/span&gt; &lt;span class="c1"&gt;# 不可约多项式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;hex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gf_mult&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x57&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0x83&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="c1"&gt;# AES 中的核心运算&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="七组合数学"&gt;七、组合数学
&lt;/h2&gt;&lt;h3 id="71-4-大计数公式"&gt;7.1 4 大计数公式
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;公式&lt;/th&gt;
					&lt;th&gt;表达式&lt;/th&gt;
					&lt;th&gt;适用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;排列 P&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;P(n, k) = n! / (n-k)!&lt;/td&gt;
					&lt;td&gt;顺序敏感&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;组合 C&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;C(n, k) = n! / (k!(n-k)!)&lt;/td&gt;
					&lt;td&gt;顺序无关&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;重复组合&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;C(n+k-1, k)&lt;/td&gt;
					&lt;td&gt;允许重复&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;错排&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;D(n) = n!(1 - 1/1! + 1/2! - 1/3! + &amp;hellip;)&lt;/td&gt;
					&lt;td&gt;都不在原位&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="72-5-大计数定理"&gt;7.2 5 大计数定理
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;定理&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;鸽巢原理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;n+1 个物体放 n 个抽屉，至少 1 个抽屉有 2 个&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;二项式定理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;(a+b)ⁿ = Σ C(n,k) aⁿ⁻ᵏ bᵏ&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;容斥原理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;|A∪B∪C| = Σ|Aᵢ| - Σ|Aᵢ∩Aⱼ| + |A∩B∩C|&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;生成函数&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;用多项式系数表示组合数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;递推关系&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;斐波那契 f(n) = f(n-1) + f(n-2)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="73-程序员应用"&gt;7.3 程序员应用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 二项式系数：Pascal 三角形&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;binomial_coefficient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;binomial_coefficient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;binomial_coefficient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 错排：5 个人各写 1 张贺卡，都不寄给自己&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;derangement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;derangement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;derangement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;derangement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# 44&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="八数理逻辑"&gt;八、数理逻辑
&lt;/h2&gt;&lt;h3 id="81-3-大核心"&gt;8.1 3 大核心
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;主题&lt;/th&gt;
					&lt;th&gt;核心内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;命题逻辑&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;命题、联结词（∧ ∨ ¬ → ↔）、真值表、永真式&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;一阶谓词演算&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;量词（∀ ∃）、谓词、函数、推理规则&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;消解原理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Robinson 1965，机器定理证明的通用算法&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="82-5-大经典推理规则"&gt;8.2 5 大经典推理规则
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;名称&lt;/th&gt;
					&lt;th&gt;形式&lt;/th&gt;
					&lt;th&gt;例子&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;假言推理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;(P→Q, P) ⊢ Q&lt;/td&gt;
					&lt;td&gt;如果下雨，地会湿；下雨了；所以地湿了&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;拒取式&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;(P→Q, ¬Q) ⊢ ¬P&lt;/td&gt;
					&lt;td&gt;如果下雨，地会湿；地没湿；所以没下雨&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;假言三段论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;(P→Q, Q→R) ⊢ P→R&lt;/td&gt;
					&lt;td&gt;下雨→地湿；地湿→滑；所以下雨→滑&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;析取三段论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;(P∨Q, ¬P) ⊢ Q&lt;/td&gt;
					&lt;td&gt;买可乐或雪碧；不买可乐；所以买雪碧&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;全称实例化&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;∀x P(x) ⊢ P(a)&lt;/td&gt;
					&lt;td&gt;所有动物会死；苏格拉底是动物；所以苏格拉底会死&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="83-程序员应用sql-谓词逻辑"&gt;8.3 程序员应用：SQL 谓词逻辑
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 谓词演算 → SQL WHERE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- ∀x (学生(x) → 选课(x))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;student&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;EXISTS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;course_selection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;student_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- ∃x (学生(x) ∧ 成绩(x) &amp;gt;= 90)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;student&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;JOIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;student_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="九5-个数学基础速查表"&gt;九、5 个数学基础速查表
&lt;/h2&gt;&lt;h3 id="91-自然数对数表"&gt;9.1 自然数对数表
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;n&lt;/th&gt;
					&lt;th&gt;log₂ n&lt;/th&gt;
					&lt;th&gt;log₁₀ n&lt;/th&gt;
					&lt;th&gt;ln n&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;10&lt;/td&gt;
					&lt;td&gt;3.32&lt;/td&gt;
					&lt;td&gt;1.00&lt;/td&gt;
					&lt;td&gt;2.30&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;100&lt;/td&gt;
					&lt;td&gt;6.64&lt;/td&gt;
					&lt;td&gt;2.00&lt;/td&gt;
					&lt;td&gt;4.61&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1000&lt;/td&gt;
					&lt;td&gt;9.97&lt;/td&gt;
					&lt;td&gt;3.00&lt;/td&gt;
					&lt;td&gt;6.91&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;10⁶&lt;/td&gt;
					&lt;td&gt;19.93&lt;/td&gt;
					&lt;td&gt;6.00&lt;/td&gt;
					&lt;td&gt;13.82&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;10⁹&lt;/td&gt;
					&lt;td&gt;29.90&lt;/td&gt;
					&lt;td&gt;9.00&lt;/td&gt;
					&lt;td&gt;20.72&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="92-常用数学符号"&gt;9.2 常用数学符号
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;符号&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
					&lt;th&gt;例子&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;∈&lt;/td&gt;
					&lt;td&gt;属于&lt;/td&gt;
					&lt;td&gt;3 ∈ {1, 2, 3}&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;⊆&lt;/td&gt;
					&lt;td&gt;子集&lt;/td&gt;
					&lt;td&gt;{1,2} ⊆ {1,2,3}&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;∪ ∩&lt;/td&gt;
					&lt;td&gt;并集 交集&lt;/td&gt;
					&lt;td&gt;A ∪ B, A ∩ B&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;∀ ∃&lt;/td&gt;
					&lt;td&gt;全称 存在&lt;/td&gt;
					&lt;td&gt;∀x P(x), ∃x P(x)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;→ ↔&lt;/td&gt;
					&lt;td&gt;蕴含 等价&lt;/td&gt;
					&lt;td&gt;P→Q, P↔Q&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;∧ ∨ ¬&lt;/td&gt;
					&lt;td&gt;与 或 非&lt;/td&gt;
					&lt;td&gt;P∧Q, P∨Q, ¬P&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Σ Π&lt;/td&gt;
					&lt;td&gt;求和 求积&lt;/td&gt;
					&lt;td&gt;Σᵢ₌₁ⁿ i = n(n+1)/2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;∫ ∂ ∇&lt;/td&gt;
					&lt;td&gt;积分 偏导 梯度&lt;/td&gt;
					&lt;td&gt;（连续数学）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="93-初等代数恒等式"&gt;9.3 初等代数恒等式
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;完全平方：(a±b)² = a² ± 2ab + b²
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;立方和：a³ + b³ = (a+b)(a² - ab + b²)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;立方差：a³ - b³ = (a-b)(a² + ab + b²)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;二次方程求根：x = (-b ± √(b² - 4ac)) / 2a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="94-几何基础"&gt;9.4 几何基础
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;图形&lt;/th&gt;
					&lt;th&gt;面积&lt;/th&gt;
					&lt;th&gt;周长&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;圆&lt;/td&gt;
					&lt;td&gt;πr²&lt;/td&gt;
					&lt;td&gt;2πr&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;矩形&lt;/td&gt;
					&lt;td&gt;a·b&lt;/td&gt;
					&lt;td&gt;2(a+b)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;三角形&lt;/td&gt;
					&lt;td&gt;√(s(s-a)(s-b)(s-c))&lt;/td&gt;
					&lt;td&gt;a+b+c&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;球&lt;/td&gt;
					&lt;td&gt;4πr²&lt;/td&gt;
					&lt;td&gt;-&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;立方体&lt;/td&gt;
					&lt;td&gt;6a²&lt;/td&gt;
					&lt;td&gt;12a&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="95-概率统计速查"&gt;9.5 概率统计速查
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;公式&lt;/th&gt;
					&lt;th&gt;表达式&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;加法&lt;/td&gt;
					&lt;td&gt;P(A∪B) = P(A) + P(B) - P(A∩B)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;乘法&lt;/td&gt;
					&lt;td&gt;P(A∩B) = P(A)·P(B|A)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;全概率&lt;/td&gt;
					&lt;td&gt;P(B) = Σ P(B|Aᵢ)·P(Aᵢ)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;贝叶斯&lt;/td&gt;
					&lt;td&gt;P(A|B) = P(B|A)·P(A) / P(B)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;期望&lt;/td&gt;
					&lt;td&gt;E[X] = Σ x·P(x)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;方差&lt;/td&gt;
					&lt;td&gt;Var(X) = E[X²] - (E[X])²&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="十4-大推荐教材"&gt;十、4 大推荐教材
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;教材&lt;/th&gt;
					&lt;th&gt;适用&lt;/th&gt;
					&lt;th&gt;难度&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;《程序员的数学》（结城浩）&lt;/td&gt;
					&lt;td&gt;入门&lt;/td&gt;
					&lt;td&gt;★★&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;《数学之美》（吴军）&lt;/td&gt;
					&lt;td&gt;应用视角&lt;/td&gt;
					&lt;td&gt;★★&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;《算法导论》（CLRS）&lt;/td&gt;
					&lt;td&gt;算法+数学&lt;/td&gt;
					&lt;td&gt;★★★★&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;《离散数学及其应用》（Rosen）&lt;/td&gt;
					&lt;td&gt;系统学习&lt;/td&gt;
					&lt;td&gt;★★★&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="十一参考与延伸"&gt;十一、参考与延伸
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prime Pages（素数数据库）&lt;/strong&gt;：&lt;a class="link" href="https://primes.utm.edu/" target="_blank" rel="noopener"
 &gt;https://primes.utm.edu/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wolfram MathWorld&lt;/strong&gt;：&lt;a class="link" href="https://mathworld.wolfram.com/" target="_blank" rel="noopener"
 &gt;https://mathworld.wolfram.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图论算法可视化&lt;/strong&gt;：&lt;a class="link" href="https://visualgo.net/zh" target="_blank" rel="noopener"
 &gt;https://visualgo.net/zh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIT 6.042J 离散数学（OCW）&lt;/strong&gt;：&lt;a class="link" href="https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/" target="_blank" rel="noopener"
 &gt;https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;陶哲轩《实分析》&lt;/strong&gt;：&lt;a class="link" href="https://terrytao.wordpress.com/books/" target="_blank" rel="noopener"
 &gt;https://terrytao.wordpress.com/books/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;下一步&lt;/strong&gt;：先把《程序员的数学》通读一遍（2-3 周），再选《算法导论》部分章节深入；接下来在 LeetCode 上&lt;strong&gt;有意识地用数学思维&lt;/strong&gt;（如用对数法分析时间复杂度、用素数优化哈希）。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="十二2024-视角8-年后程序员的数学基础变了吗"&gt;十二、2024+ 视角：8 年后，程序员的数学基础变了吗？
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;本文写于 2016 年 1 月。&lt;strong&gt;8 年后（2024-2026）回望，7 大离散数学分支 + 5 大数论核心 + 4 大图论应用——这套&amp;quot;老菜单&amp;quot;依然有效&lt;/strong&gt;，但每道菜都多了一层&amp;quot;AI 时代&amp;quot;的浇头。下面逐条对照。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="121-素数8-年后的新角色"&gt;12.1 素数：8 年后的新角色
&lt;/h3&gt;&lt;p&gt;2016 年我写&amp;quot;素数 = RSA + 哈希表&amp;quot;。&lt;strong&gt;2024-2026 素数的新角色&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;后量子密码学（Post-Quantum Cryptography, PQC）&lt;/strong&gt;——2024-08 NIST 正式发布 PQC 标准
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ML-KEM&lt;/strong&gt;（原 Kyber，格密码 / Lattice-based）——核心仍依赖&lt;strong&gt;有限域运算 + 素数&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ML-DSA&lt;/strong&gt;（原 Dilithium）——签名算法，基于&lt;strong&gt;模运算 + 拒绝采样&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SLH-DSA&lt;/strong&gt;（原 SPHINCS+）——哈希签名，&lt;strong&gt;只依赖哈希函数（无素数）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国密算法 SM2/SM3/SM4&lt;/strong&gt;——等保 2.0 三级强制要求，&lt;strong&gt;SM2 基于 256 位素数域椭圆曲线&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;零知识证明（ZKP）&lt;/strong&gt;——zk-SNARK、zk-STARK 在区块链 + 隐私计算中爆发，&lt;strong&gt;核心数学是素数域 + 多项式承诺&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RSA 仍在用&lt;/strong&gt;——2024-2026 仍是 80% HTTPS 站点的主流算法，&lt;strong&gt;2048 位 / 4096 位 RSA 是事实标准&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;关键变化&lt;/strong&gt;：素数从&amp;quot;经典密码学&amp;quot;扩展到&amp;quot;后量子密码 + 零知识证明 + 国产化合规&amp;quot;——&lt;strong&gt;8 年后素数仍是程序员必须懂的&amp;quot;硬数学&amp;quot;&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="122-对数llm-时代的新复杂度"&gt;12.2 对数：LLM 时代的新复杂度
&lt;/h3&gt;&lt;p&gt;2016 年我写&amp;quot;对数 = &lt;code&gt;O(log n)&lt;/code&gt; 时间复杂度&amp;quot;。&lt;strong&gt;2024-2026 对数有了新战场&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Transformer 复杂度&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;标准 Attention：&lt;code&gt;O(n²)&lt;/code&gt;（n 是序列长度）——128K 上下文就是 163 亿次运算&lt;/li&gt;
&lt;li&gt;FlashAttention：&lt;code&gt;O(n log n)&lt;/code&gt; 显存、实际计算仍是 &lt;code&gt;O(n²)&lt;/code&gt;——&lt;strong&gt;2022-2024 主流优化&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Linear Attention（Performer / Mamba）：&lt;code&gt;O(n)&lt;/code&gt;——&lt;strong&gt;2024-2026 正在突破的方向&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Token 经济学&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;LLM 推理时 KV Cache 占显存 &lt;code&gt;O(n²)&lt;/code&gt;——&lt;strong&gt;各种压缩方案都在用对数技巧&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;上下文长度 1M（Llama 4 2025 目标）需要 &lt;strong&gt;Sub-quadratic 算法&lt;/strong&gt;——对数是关键&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;时间复杂度面试新题&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;2024 面试题：&amp;ldquo;为什么 Attention 是 &lt;code&gt;O(n²)&lt;/code&gt;？&amp;rdquo;&lt;/li&gt;
&lt;li&gt;2024 面试题：&amp;ldquo;如何把 Attention 优化到 &lt;code&gt;O(n log n)&lt;/code&gt;？&amp;rdquo;&lt;/li&gt;
&lt;li&gt;2024 面试题：&amp;ldquo;KV Cache 怎么压缩？&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;关键变化&lt;/strong&gt;：对数从&amp;quot;二分查找&amp;quot;扩展到&amp;quot;LLM 复杂度分析&amp;quot;——&lt;strong&gt;8 年后对数仍是计算机科学的&amp;quot;复杂度语言&amp;quot;&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="123-集合论--图论rag-与知识图谱的基础"&gt;12.3 集合论 / 图论：RAG 与知识图谱的基础
&lt;/h3&gt;&lt;p&gt;2016 年我写&amp;quot;集合论 = SQL 基础&amp;quot;。&lt;strong&gt;2024-2026 集合论 / 图论的新角色&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;RAG（检索增强生成）&lt;/strong&gt;——本质是&lt;strong&gt;集合论 + 向量空间&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;文档 → Embedding → 集合 Top-K 查询&lt;/li&gt;
&lt;li&gt;关系代数（&lt;code&gt;UNION / INTERSECT / JOIN&lt;/code&gt;）在 RAG pipeline 里反复出现&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识图谱&lt;/strong&gt;——图论 + Embedding：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Microsoft GraphRAG&lt;/strong&gt;（2024 发布）——基于 LLM 抽取实体关系，建图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neo4j 5.x + LangChain&lt;/strong&gt;——2024-2026 知识图谱 + LLM 主流方案&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实体关系（Entity-Relation）&lt;/strong&gt; = 图论里的&amp;quot;边&amp;quot;+&amp;ldquo;顶点&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图神经网络（GNN）&lt;/strong&gt;——图论 + 深度学习：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;药物发现&lt;/strong&gt;（分子结构 = 图）——2024-2026 大爆发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;推荐系统&lt;/strong&gt;（用户-商品二分图）——几乎所有大厂都在用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;社交网络分析&lt;/strong&gt;——Facebook / 微信的&amp;quot;朋友推荐&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据库 JOIN 优化&lt;/strong&gt;——图论 + 关系代数的&lt;strong&gt;回旋镖&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;2024-2026 图数据库（Neo4j / TigerGraph / NebulaGraph）爆发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL + Graph Hybrid&lt;/strong&gt; 成为新趋势&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;关键变化&lt;/strong&gt;：集合论 / 图论从&amp;quot;数据库基础&amp;quot;扩展到&amp;quot;RAG + 知识图谱 + GNN&amp;quot;——&lt;strong&gt;8 年后图论成为 AI 时代&amp;quot;数据建模&amp;quot;的核心语言&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="124-代数结构--数理逻辑形式化验证与-ai-推理"&gt;12.4 代数结构 / 数理逻辑：形式化验证与 AI 推理
&lt;/h3&gt;&lt;p&gt;2016 年我写&amp;quot;代数结构 = 密码学&amp;quot;。&lt;strong&gt;2024-2026 新角色&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;形式化验证（Formal Verification）&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lean 4 + Mathlib&lt;/strong&gt;（2024-2026 爆发）——用数理逻辑证明数学定理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coq / Isabelle / TLA+&lt;/strong&gt;——形式化验证工业软件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS 用 TLA+ 验证 S3 正确性&lt;/strong&gt;——经典案例&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 自动定理证明&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DeepMind AlphaProof&lt;/strong&gt;（2024-07，IMO 银牌）——AI 解数学题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI o1/o3 系列&lt;/strong&gt;——Chain-of-Thought 推理的工业化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lean Copilot&lt;/strong&gt;（2024）——AI + Lean 4 证明助手&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;约束求解（SMT Solver）&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Z3&lt;/strong&gt;——程序分析、编译器优化、形式化验证的核心&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SMT-LIB&lt;/strong&gt;——形式化逻辑标准语言&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;格密码（Lattice-based Cryptography）&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LWE / RLWE&lt;/strong&gt; 问题——后量子密码学基础&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;格理论（Lattice Theory）&lt;/strong&gt; = 离散数学的&amp;quot;现代分支&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;关键变化&lt;/strong&gt;：代数结构 / 数理逻辑从&amp;quot;教科书理论&amp;quot;走向&amp;quot;AI 推理 + 形式化验证&amp;quot;——&lt;strong&gt;8 年后数理逻辑成为 AI 推理的&amp;quot;形式化底层&amp;quot;&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="125-组合数学算法竞赛--ai-推理"&gt;12.5 组合数学：算法竞赛 → AI 推理
&lt;/h3&gt;&lt;p&gt;2016 年组合数学主要用于&amp;quot;算法竞赛 + 概率分析&amp;quot;。&lt;strong&gt;2024-2026 新场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;AI 推理的组合优化&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chain-of-Thought&lt;/strong&gt; 路径搜索 = &lt;strong&gt;图搜索 + 组合&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tree-of-Thoughts / Graph-of-Thoughts&lt;/strong&gt;（2023-2024）= 显式的组合搜索&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密码学协议&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;安全多方计算（MPC）&lt;/strong&gt;——基于秘密分享 + 组合数学&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;同态加密&lt;/strong&gt;——基于格 + 模运算 + 组合优化&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生成式 AI&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;采样算法&lt;/strong&gt;（MCMC / 拒绝采样 / 重要性采样）= 组合数学 + 概率&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;关键变化&lt;/strong&gt;：组合数学从&amp;quot;竞赛技巧&amp;quot;扩展到&amp;quot;AI 推理路径搜索&amp;quot;——&lt;strong&gt;8 年后组合数学成为 AI 系统设计的&amp;quot;组合优化&amp;quot;工具&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="126-计算模型图灵机--神经网络的可计算性"&gt;12.6 计算模型：图灵机 → 神经网络的&amp;quot;可计算性&amp;quot;
&lt;/h3&gt;&lt;p&gt;2016 年我说&amp;quot;图灵机 = 理论 CS 的基础&amp;quot;。&lt;strong&gt;2024-2026 新思考&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;大语言模型能&amp;quot;计算&amp;quot;吗？&lt;/strong&gt;——这是个 2023-2026 仍在争论的哲学问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transformer 是图灵完备的&lt;/strong&gt;（已被严格证明）——但它的&amp;quot;计算范式&amp;quot;和图灵机完全不同&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;神经图灵机 / 神经 RAM&lt;/strong&gt;（2024-2026 探索中）——结合神经网络 + 外部记忆&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可解释性 / 形式化推理&lt;/strong&gt;——2024-2026 在&amp;quot;AI 可解释&amp;quot;领域，&lt;strong&gt;数理逻辑 + 计算模型&lt;/strong&gt;仍是基础&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;关键变化&lt;/strong&gt;：计算模型从&amp;quot;理论 CS 课程&amp;quot;扩展到&amp;quot;AI 系统的可计算性 / 可解释性&amp;quot;——&lt;strong&gt;8 年后计算模型成为 AI 系统的&amp;quot;理论根基&amp;quot;&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="127-8-年对照表"&gt;12.7 8 年对照表
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;分支&lt;/th&gt;
					&lt;th&gt;2016 应用&lt;/th&gt;
					&lt;th&gt;2024-2026 应用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;素数&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;RSA / 哈希&lt;/td&gt;
					&lt;td&gt;后量子密码 / SM 国密 / ZKP&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;对数&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;O(log n)&lt;/code&gt; / 二分查找&lt;/td&gt;
					&lt;td&gt;LLM 复杂度 / Token 经济学 / KV Cache&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;集合论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;SQL / 关系代数&lt;/td&gt;
					&lt;td&gt;RAG / Embedding 集合 / 向量库&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;图论&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;网络拓扑 / 依赖分析&lt;/td&gt;
					&lt;td&gt;知识图谱 / GNN / 图数据库&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;代数结构&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;密码学 / 有限域&lt;/td&gt;
					&lt;td&gt;格密码 / 同态加密 / MPC&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;数理逻辑&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;谓词逻辑 / Prolog&lt;/td&gt;
					&lt;td&gt;形式化验证 / Lean 4 / AI 推理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;组合数学&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;算法竞赛 / 概率&lt;/td&gt;
					&lt;td&gt;AI 推理路径搜索 / MCMC&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;计算模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;图灵机 / 自动机&lt;/td&gt;
					&lt;td&gt;Transformer 可计算性 / AI 解释&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="128-8-年升级版书单"&gt;12.8 8 年升级版书单
&lt;/h3&gt;&lt;p&gt;2016 年我推荐 4 本书。&lt;strong&gt;2024 年我会加 3 本&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;教材&lt;/th&gt;
					&lt;th&gt;主题&lt;/th&gt;
					&lt;th&gt;2024 价值&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;《Mathematics for Machine Learning》&lt;/strong&gt;（MML Book）&lt;/td&gt;
					&lt;td&gt;线性代数 + 概率 + 优化&lt;/td&gt;
					&lt;td&gt;入门 ML 必备数学&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;《Information Theory, Inference, and Learning Algorithms》&lt;/strong&gt;（David MacKay）&lt;/td&gt;
					&lt;td&gt;信息论 + 编码 + 推理&lt;/td&gt;
					&lt;td&gt;理解 LLM 原理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;《Computational Complexity: A Modern Approach》&lt;/strong&gt;（Arora, Barak）&lt;/td&gt;
					&lt;td&gt;计算复杂性理论&lt;/td&gt;
					&lt;td&gt;深入 AI 系统的理论极限&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;外加 3 个&lt;strong&gt;免费在线资源&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3Blue1Brown&lt;/strong&gt;（YouTube / B 站）——线性代数 / 微积分 / 信息论可视化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIT 18.065 Matrix Methods in Data Analysis&lt;/strong&gt;（OCW）——线性代数应用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distill.pub&lt;/strong&gt;（归档前存档）——深度学习可视化讲解&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="129-8-年前-vs-8-年后写给想补数学基础的工程师"&gt;12.9 8 年前 vs 8 年后：写给&amp;quot;想补数学基础&amp;quot;的工程师
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;2016 年的建议&lt;/strong&gt;：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;想补数学基础 → 读 Rosen 离散数学 → 读 CLRS 算法导论 → 在 LeetCode 上用数学思维&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;2024 年的升级版建议&lt;/strong&gt;：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;想补数学基础 → 读 Rosen 离散数学（&lt;strong&gt;仍是基础&lt;/strong&gt;）→ 读 MML Book 入门 ML 数学 → 读《Lean 4 定理证明导论》入门形式化 → 在 LLM 应用上用数学思维（RAG / Embedding / 知识图谱）&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;核心变化&lt;/strong&gt;：8 年后&lt;strong&gt;离散数学没变，ML 数学 + 形式化验证是新基础&lt;/strong&gt;。RAG 时代补数学，&lt;strong&gt;MML Book + 信息论 + 一点 Lean 4&lt;/strong&gt; 比单纯啃 CLRS 更实用。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="1210-写在最后"&gt;12.10 写在最后
&lt;/h3&gt;&lt;p&gt;2016 年我写&amp;quot;想补数学基础的工程师从 LeetCode 开始&amp;quot;。&lt;strong&gt;8 年后我想说&lt;/strong&gt;：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;LeetCode 仍然是好起点，但终点已经变了&lt;/strong&gt;——&lt;br&gt;
2016 年终点是&amp;quot;写出高效的算法&amp;quot;&lt;br&gt;
2024 年终点是&amp;quot;用数学理解 LLM 的能力边界&amp;quot;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;离散数学、线性代数、概率论、数理逻辑&lt;/strong&gt;——这 4 门课是 8 年不变的&amp;quot;硬基础&amp;quot;；&lt;strong&gt;信息论、计算复杂性、形式化验证&lt;/strong&gt;——这 3 门是 2024-2026 的&amp;quot;新基础&amp;quot;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;8 年前我担心&amp;quot;被数学卡住 5 分钟&amp;quot;，&lt;br&gt;
8 年后我担心&amp;quot;被 AI 系统的数学基础卡住 5 小时&amp;quot;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;数学不会变老，&lt;strong&gt;只是换了个地方等我们回来&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="参考资料2024-补充"&gt;参考资料（2024+ 补充）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://csrc.nist.gov/projects/post-quantum-cryptography" target="_blank" rel="noopener"
 &gt;NIST PQC 标准（FIPS 203/204/205）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/microsoft/graphrag" target="_blank" rel="noopener"
 &gt;Microsoft GraphRAG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://leanprover.github.io/" target="_blank" rel="noopener"
 &gt;Lean 4 形式化证明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2104.04322" target="_blank" rel="noopener"
 &gt;Mathematical Structures in Deep Learning（综述）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/state-spaces/mamba" target="_blank" rel="noopener"
 &gt;Mamba: Linear-Time Sequence Modeling with Selective State Spaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://mml-book.github.io/" target="_blank" rel="noopener"
 &gt;MML Book: Mathematics for Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://deepmind.google/discover/blog/ai-solves-imo-problems-at-silver-medal-level/" target="_blank" rel="noopener"
 &gt;DeepMind AlphaProof（IMO 2024）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2404.12586" target="_blank" rel="noopener"
 &gt;Lean Copilot: AI for Theorem Proving&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2307.08691" target="_blank" rel="noopener"
 &gt;FlashAttention 2 论文&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>