数论基础(一)

数学符号

整除 / 同余理论常见符号

  1. 整除符号:\(x \mid y\),表示 \(x\) 整除 \(y\)
  2. 取模符号:\(x \bmod y\),表示 \(x\)\(y\) 取模。
  3. 互质符号:\(x \perp y\),表示 \(x\)\(y\) 互质。
  4. 同余:\(n \equiv k \pmod m\),表示\(n\)\(k\) 在模 \(m\) 意义下同余。
  5. 最大公约数:\(\gcd(x, y)\),也可记作 \((x, y)\)
  6. 最小公倍数:\(\operatorname{lcm}(x, y)\),也可记作 \([x, y]\)

数论函数常见符号

  1. 求和符号:\(\sum\) 符号,表示满足特定条件的数的和。
  2. 求积符号:\(\prod\) 符号,表示满足特定条件的数的积。

逻辑符号

  1. 合取:\(\land\)\(p \land q\) 表示 \(p\)\(q\)
  2. 析取:\(\lor\)\(p \lor q\) 表示 \(p\)\(q\)
  3. 否定:\(\lnot\)\(\lnot p\) 表示 \(p\) 的否定。
  4. 蕴含:\(\implies\)\(p \implies q\) 表示 \(p\) 蕴含 \(q\),即若 \(p\) 为真,则 \(q\) 为真。
  5. 等价:\(\iff\)\(p \iff q\) 表示 \(p\)\(q\) 等价。
  6. 存在:\(\exists\);任意:\(\forall\)

集合符号

  1. 属于:\(\in\)\(x \in A\) 表示 \(x\) 为集合 \(A\) 中的元素。
  2. 不属于:\(\notin\)
  3. 空集:\(\varnothing\)
  4. \(\{x_1, x_2, \dots, x_n \}\),表示含元素 \(x_1, x_2, \dots, x_n\) 的集合。
  5. \(\{x \in A ~\vert~ p(x) \}\),表示 \(A\) 中使命题 \(p(x)\) 为真的所有元素组成的集合。
  6. 包含:\(B \subseteq A\),表示 \(B\)\(A\) 的子集。
  7. 真包含:\(B \subset A\),表示 \(B\)\(A\) 的真子集。
  8. 并集:\(A \cup B\),表示 \(A\)\(B\) 的并集。
  9. 交集:\(A \cap B\),表示 \(A\)\(B\) 的交集。
  10. 多个集合的并集:\(\displaystyle \bigcup \limits_{i = 1} ^ n A_i\) 表示集合 \(A_1, A_2, \dots, A_n\) 的并集。
  11. 多个集合的交集:\(\displaystyle \bigcap \limits_{i = 1} ^ n A_i\) 表示集合 \(A_1, A_2, \dots, A_n\) 的交集。

标准数集和区间符号

  1. 自然数集:\(\mathbb{N}\),表示所有自然数构成的集合,使用 \(\mathbb{N^+}\) 来表示所有正整数。
  2. 整数集:\(\mathbb{Z}\),表示所有整数构成的集合。
  3. 有理数集:\(\mathbb{Q}\),表示所有有理数构成的集合。
  4. 实数集:\(\mathbb{R}\),表示所有实数构成的集合。
  5. 复数集:\(\mathbb{C}\),表示所有复数构成的集合。
  6. (正)素数集:\(\mathbb{P}\),表示所有(正)素数构成的集合。

关系符号

  1. 正比:\(a \propto b\),表示 \(a\)\(b\) 成正比。
  2. 远大于:\(a \gg b\),表示 \(a\) 远大于 \(b\)
  3. 远小于:\(a \ll b\),表示 \(a\) 远小于 \(b\)
  4. 无限大:\(\infty\)
  5. 趋近:\(x \to a\),表示 \(x\) 趋近于 \(a\),常用于极限表达式中。

其他常见符号

  1. 阶乘符号:\(!\)\(n!\) 表示 \(1 \times 2 \times 3 \times \dotsb \times n\)。特别的,\(0! = 1\)
  2. 向下取整符号:\(\lfloor x \rfloor\),表示不超过 \(x\) 的最大整数。
  3. 向上取整符号:\(\lceil x \rceil\),表示大于等于 \(x\) 的最大整数。
  4. 组合数:\(\binom{x}{y}\),表示从 \(x\) 个数中选出 \(y\) 个数的方案数。
  5. 第一类斯特林数:\(x \brack y\);第二类斯特林数:\(x \brace y\)

整除

定义

\(a, b \in \mathbb{Z}, a \neq 0\)\(\exists q \in \mathbb{Z}\),使得 \(b = aq\),那么 \(b\) 可被 \(a\) 整除,记作 \(a \mid b\)

性质

  • \(a \mid b \iff -a \mid b \iff a \mid -1 \iff \lvert a\rvert \mid \lvert b\rvert\)
  • \(a \mid b \land b \mid c \implies a \mid c\)
  • \(a \mid b \land b \mid a \implies b = \pm a\)
  • \(m\) 不为 \(0\),则 \(a \mid b \iff ma \mid mb\)
  • \(b\) 不为 \(0\),则 \(a \mid b \implies \lvert a\rvert \le \lvert b\rvert\)

其他概念

因数(约数):若 \(a \mid b\),则 \(b\)\(a\) 的倍数, \(a\)\(b\) 的因数。
平凡因数:对于整数 \(b \neq 0\)\(\pm 1\)\(\pm b\) 称为 \(b\) 的平凡因数。
素数(质数):只有平凡因数作为因数的数称为素数。

通常而言,约数指的是正约数

最大公约数与最小公倍数

定义

最大公约数,即为 Greatest Common Divisor,缩写为 gcd。一组整数的公约数,是指同时是这组数中每一个数的约数的数,而最大公约数是其中最大的一个。
最小公倍数,即为 Least Common Multiple,缩写为 lcm。定义可以参考 gcd。

求法

如何求出一组整数的最大公约数与最小公倍数呢?我们可以先从两个整数 \(a\)\(b (a > b)\) 开始考虑。处理这个问题的经典算法是欧几里得算法,又名辗转相除法。

具体而言,我们可以分两种情况讨论。假如 \(b \mid a\),那么 \(b\) 即为 \(a\)\(b\) 的最大公约数;但如果 \(b \nmid a\) 又该如何?这时候,就要用到辗转相除法的精髓:\(\gcd(a, b) = \gcd(b, a \bmod b)\)

证明:
\(a = kb + c\),那么 \(c = a \bmod b\)。又令 \(a\)\(b\) 的最大公约数为 \(d\),显然有 \(d \mid c\)。考虑反证法:如果 \(\gcd(b, c) \ne d\),那么 \(\gcd(a, b) = \gcd(kb + c, b) \ne d\),与我们的假设 \(d\)\(a\)\(b\) 的最大公约数矛盾,因此“\(\gcd(b, c) \ne d\)”不成立,即 \(\gcd(a, b) = \gcd(b, a\bmod b)\)

那么,我们该如何利用这个性质求出 \(\gcd(a, b)\) 呢?我们可以考虑临界情况:当 \(b \bmod a = 0\) 时,显然 \(b\) 即为我们要求的最大公约数。那么我们可以进行递归求解,只要其中一个数为 \(0\) 即可停止。

不难写出这样的代码:

// 正常版本
int gcd(int a, int b) {
    if (b == 0) return a;
    else return gcd(b, a % b);
}

// 三位运算符版本
int gcd(a, b) { return b ? gcd(b, a % b) : a; }

那么,要求一组数的最大公约数,我们可以先求出前两个数的最大公约数,再求这个数与第三个数的最大公约数,以此类推即可。

那么 lcm 呢?我们可以用到这样一个性质:\(a \times b = \gcd(a, b) \times \operatorname{lcm}(a, b)\)

证明:
\(a = p_1^{k_{a_1}}p_2^{k_{a_2}}\dots p_s^{k_{a_s}}\)\(b = p_1^{k_{b_1}}p_2^{k_{b_2}}\dots p_s^{k_{b_s}}\)。显然 \(\gcd(a, b) = p_1^{\min(k_{a_1}, k_{b_1})}p_2^{\min(k_{a_2}, k_{b_2})} \dots p_s^{\min(k_{a_s}, k_{b_s})}\)\(\operatorname{lcm} = p_1^{\max(k_{a_1}, k_{b_1})}p_2^{\max(k_{a_2}, k_{b_2})} \dots p_s^{\max(k_{a_s}, k_{b_s})}\)。不难看出,\(a \times b = \gcd(a, b) \times \operatorname{lcm}(a, b)\)

那么,我们只需要类比上面的思路,求出最大公约数之后再求出最小公倍数即可。

posted @ 2024-02-04 10:43  Floze3  阅读(489)  评论(0)    收藏  举报