浅谈数论
  • 板块学术版
  • 楼主renhongxuuu
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/22 21:58
  • 上次更新2025/7/22 22:00:56
查看原帖
浅谈数论
1414494
renhongxuuu楼主2025/7/22 21:58

浅谈数论

前言

若非特殊说明,本文所有的未知数均为整数

符号

  1. ⌊x⌋、⌈x⌉\lfloor x \rfloor 、\lceil x \rceil x向下取整、向上取整

    定义:

    • ⌊x⌋:小于等于x的最大整数\lfloor x \rfloor:小于等于x的最大整数

    • ⌈x⌉:大于等于x的最小整数\lceil x \rceil:大于等于x的最小整数

    性质:⌊x⌋=−⌈−x⌉\lfloor x \rfloor = - \lceil -x \rceil

  2. a%b=ca \% b = c 也写成a mod b=ca \bmod b = c 即cc是a+kba+kb的最小正值

    注:这个定义虽然当b⩽0b \leqslant 0时也成立,但一般不考虑该情况,当b>0b \gt 0时,a%b⟺a−⌊ab⌋×ba \% b \Longleftrightarrow a - \lfloor\frac{a}{b}\rfloor \times b。

    性质:

    • (a+b) mod c=((a mod c)+(b mod c)) mod c(a + b)\bmod c = ((a \bmod c) + (b \bmod c))\bmod c

    • (a×b) mod c=((a mod c)×(b mod c)) mod c(a \times b)\bmod c = ((a \bmod c) \times (b \bmod c))\bmod c

    • ab mod c=(a mod c)b mod ca^b \bmod c =(a \bmod c)^b \bmod c

  3. gcd(a,b)=c\text{gcd}(a,b)=c \quad即整数a,b的最大公约数是c

    当gcd(a,b)=1\text{gcd}(a,b)=1时,称a,b互质。

    性质:

    1. gcd(a,b)=gcd(b,a)\text{gcd}(a,b)=\text{gcd}(b,a)
    2. gcd(a,0)=a\text{gcd}(a,0)=a
    3. gcd(a,b)=gcd(b,a%b)\text{gcd}(a,b)=\text{gcd}(b,a\%b)
    4. 裴蜀定理:gcd(a,b)是集合{ax+by∣x,y∈Z}中最小的正整数\text{gcd}(a,b) 是集合 \{ax+by|x,y \in \mathbb{Z}\} 中最小的正整数
    5. 4的推论:整数线性组合ax+by的值恰为gcd(a,b)的所有倍数整数线性组合ax+by的值恰为 \text{gcd}(a,b)的所有倍数

    根据性质3求gcd(a,b)\text{gcd}(a,b)的时间复杂度最坏是O(log⁡ϕmin⁡(a,b))O(\log _{\phi} \min(a,b)),一般计为O(log⁡min(a,b))O(\log min(a,b))

    性质3的证明:

    设r=x%y,k=x−ry则r=x−ky,x=r+ky一方面:设d为x,y的公约数,x=l⋅d,y=m⋅d∴r=x−ky=l⋅d−k⋅md=(l−k⋅m)d∴d为md,(l−km)d的公约数∴d为y,r的公约数另一方面:设q为y,r的公约数,y=o⋅q,r=p⋅q∴x=r+ky=p⋅q+k⋅oq=(p+k⋅o)q∴q为(p+ko)q,oq的公约数∴q为x,y的公约数∴(d是x,y的公约数)是(d是y,r的公约数)的充分必要条件∴x,y的公约数集合A{d∣(d∣gcd(x,y))}等价于y,r的公约数集合B{q∣(q∣gcd(y,r))}∴gcd(x,y)=gcd(y,r)证毕设r=x\%y,k=\frac{x-r}{y}\\ 则r=x-ky,x=r+ky\\ 一方面:设d为x,y的公约数,x=l\cdot d,y=m\cdot d\\ \therefore r=x-ky=l\cdot d-k\cdot md=(l-k\cdot m)d\\ \therefore d为md,(l-km)d的公约数\\ \therefore d为y,r的公约数\\ 另一方面:设q为y,r的公约数,y=o\cdot q,r=p\cdot q\\ \therefore x=r+ky=p\cdot q+k\cdot oq=(p+k\cdot o)q\\ \therefore q为(p+ko)q,oq的公约数\\ \therefore q为x,y的公约数\\ \therefore (d是x,y的公约数)是(d是y,r的公约数)的充分必要条件\\ \therefore x,y的公约数集合A\{d|(d\mid \text{gcd}(x,y) )\}等价于y,r的公约数集合B\{q|(q \mid \text{gcd}(y,r))\}\\ \therefore \text{gcd}(x,y)=gcd(y,r)\\ 证毕
  4. lcm(a,b)=c  \text{lcm}(a,b)=c\; 即c是a、b的最小公倍数

    性质:lcm(a,b)=abgcd(a,b)\text{lcm}(a,b)=\frac{ab}{\text{gcd(a,b)}}

  5. a∣ba \mid b 读作a整除ba整除b 即**a是b的因数a是b的因数**

    特别的,a∣0,1∣aa\mid 0,1 \mid a

    性质:

    1. 若a∣b,c∣b且a,c互质,则ac∣ba \mid b ,c \mid b且a,c互质,则 ac \mid b

    2. z若a∣b,a∣c⟺∀x,y a∣(bx+cy)a \mid b,a \mid c \Longleftrightarrow \forall x,y \ a\mid (bx+cy)

      证明:

      ∵a∣b,a∣c∴a∣gcd(b,c)∴a∣k⋅gcd(b,c)∴a∣(bx+cy)\because a \mid b, a \mid c \\ \therefore a \mid \text{gcd}(b,c) \\ \therefore a \mid k \cdot \text{gcd}(b,c) \\ \therefore a \mid (bx+cy)
  6. a≡b(modc)  a\equiv b \pmod c \; :a,b模c同余a,b模c同余,即a%c=b%ca\% c = b \% c

    意义:

    a≡b(modc)a\equiv b \pmod c表明a,b模c的意义一样

    举例:

    求:(999999)999 mod 1000∵(−1)≡999(mod1000)∴(999999)999 mod 1000⟺[(−1)(−1)](−1) mod 1000=(−1) mod 1000=999求:{({999}^{999})}^{999}\bmod 1000\\ \because (-1) \equiv 999 \pmod {1000}\\ \therefore {({999}^{999})}^{999}\bmod 1000 \Longleftrightarrow [(-1)^{(-1)}]^{(-1)} \bmod 1000 = (-1) \bmod 1000 =999

    性质:

    • (a%m+b%m)%m=(a+b)%m(a \% m + b \% m) \% m = (a+b)\%m
    • (a%m−b%m)%m=(a−b)%m(a \% m - b \% m) \% m = (a-b)\%m
    • (a%m×b%m)%m=(a×b)%m(a \% m \times b \% m) \% m = (a \times b)\%m
    • 若a≡b(modc)⟺c∣(a−b)a\equiv b \pmod c \Longleftrightarrow c \mid (a-b)

    如果你只知道a%m,b%ma\%m,b\%m的值可以进行三则运算推出(a+b)%m,(a−b)%m,(a×b)%m(a+b)\% m,(a-b)\% m,(a\times b)\% m的正确值

    这里没有除法运算,假如你只知道a%m,b%ma\%m,b\%m的值,无法通过a%mb%m\frac{a\%m}{b\%m}来计算ab%m\frac{a}{b} \% m的值,但还有其他方法来计算(后文会将具体处理方法)


正文

引例

  1. 求999999999 mod 1000999^{999^{999}} \bmod 1000
  2. 出以下方程未知数的通解或说明其无解
    1. 3x≡1(mod9)3x \equiv 1 \pmod {9}

    2. 3x≡2(mod8)3x \equiv 2 \pmod 8

  3. 正整数,除以三余二,除以五余二,除以七余三,问这个数最小是多少?
  4. 已知一个大于10001000的数末三位是123123,把该数乘了一个正整数xx,现在它的末三位为041041,问乘的数xx最小是多少?
  5. 已知一个大于10001000的数末三位是201201,把该数乘了一个正整数xx,现在它的末三位为067067,问乘的数xx最小是多少?
  6. 是否存在21个连续的正整数,使得其中每个数均被至少一个2∼132 \sim 13 的素数整除?若有,请写出这21个正整数的中间数的最小值;若没有,请说明理由。
  7. 计算7105 mod 107^{105} \bmod 10
  8. 10321032的最后两位?1032^{1032} 的最后两位?
  9. 定义{f(1)=1当n为正整数时f(n)=nf(n−1)\begin{cases}f(1)=1 \\当n为正整数时\quad f(n)=n^{f(n-1)} \end{cases},求f(2008)f(2008)的最后3位。
  10. 求证:当n⩾3n\geqslant 3时,n(nn)≡nn(mod16)n^{(n^{n})}\equiv n^{n} \pmod {16}
  11. 求证:当n⩾3n\geqslant 3时,1989∣n(n(nn))−n(nn)1989 \mid n^{(n^{(n^{n})})}-n^{(n^{n})}
  12. 试证明非对称加密算法RSARSA算法的正确性并解释

扩展欧几里得定理

明确定义

扩展欧几里得定理(Extended Euclidean algorithm、EXGCD) 是一个用来求解形如ax≡b(modc)ax\equiv b \pmod c的线性同余方程的整数解的算法

转化

若想求解形如ax≡b(modc)ax\equiv b \pmod c的方程的通解或判断是否有解,不妨根据同余的性质,使原方程等价于ax+cy=bax+cy=b

接下来我们求解x,y即可

(我们不需要考虑a,c,b<0a,c,b \lt 0时的情况,因为我们可以将方程变为∣a∣(a∣a∣×x)+∣c∣(c∣c∣×y)=b|a|(\frac{a}{|a|}\times x)+|c|(\frac{c}{|c|}\times y)=b的形式)

通解公式

我们先不研究该方程的解,我们研究该方程解的性质:

若x1,y1是方程ax+cy=b的一组解则ax1+cy1=b∴ax1+a⋅c⋅k−a⋅c⋅k+cy1=b∴a(x1+c×k)+c(y1−a×k)=b∴该方程的所有解为{x=x1+c×ky=y1−a×k若x_1,y_1是方程ax+cy=b的一组解\\ 则ax_1+cy_1=b\\ \therefore ax_1+a\cdot c\cdot k - a\cdot c \cdot k + cy_1=b\\ \therefore a(x_1+c\times k)+c(y_1-a\times k) =b\\ \therefore 该方程的所有解为\begin{cases} x=x_1+c\times k\\ y=y_1-a\times k \end{cases}

接下来只需要求解该方程的一组解即可

化简

我们不妨令a′=agcd(a,c),b′=bgcd(a,c),c′=cgcd(a,c)a^\prime =\frac{a}{\text{gcd}(a,c)},b^\prime =\frac{b}{\text{gcd}(a,c)},c^\prime =\frac{c}{\text{gcd}(a,c)}则方程ax+cy=bax+cy=b 可以变形为a′x+c′y=b′a^\prime x+c^\prime y=b^\prime

显然的a′,c′∈Z ,gcd(a′,c′)=1a^\prime,c^\prime \in \mathbb{Z}\ ,\text{gcd}(a^\prime ,c^\prime )=1

根据gcdgcd的性质,a′x+c′y可以表示为整数k×gcd(a′,c′)=k×1=ka^\prime x+c^\prime y可以表示为整数k \times gcd(a^\prime ,c^\prime)=k\times 1=k

∴a′x+c′y∈Z\therefore a^\prime x+c^\prime y\in \mathbb{Z}

若b′∉Z,则a′x+c′y∉Z,与上文矛盾。b^\prime \notin \mathbb{Z},则a^\prime x+c^\prime y \notin \mathbb{Z},与上文矛盾。

所以,方程ax+cy=b有解,当且仅当gcd(a,c)∣b所以,方程ax+cy=b有解,当且仅当\text{gcd}(a,c)\mid b

接下来只需要求解方程a′x+c′y=b′a^\prime x+c^\prime y= b^\prime

随堂测验:请写出下列方程的通解或说明其无解:

  1. 3x≡1(mod9)3x\equiv 1 \pmod 9

    解:

    该方程等价于3x+9y=1提取a,b的最大公约数3,方程变为3(x+3y)=1∵3∤1∴该方程无解该方程等价于3x+9y=1\\ 提取a,b的最大公约数3,方程变为3(x+3y)=1\\ \because 3 \nmid 1\\ \therefore 该方程无解
  2. 化简:12x+4y=812x+4y=8

    解:3x+y=23x+y=2

再变形

方程变为了ax+by=cax+by=c (注此时的a,bb和上面不同,并且gcd(a,b)=1\text{gcd}(a,b)=1)

我们不妨研究方程 aX+bY=1aX+bY=1中x,X,y,Yx,X,y,Y的关系

将方程二两边乘以cc,变为 a(X⋅c)+b(Y⋅c)=ca(X\cdot c)+b(Y\cdot c)=c

接下来只需要解出方程aX+bY=1aX+bY=1并且满足 gcd(a,b)=1\text{gcd}(a,b)=1的解X,YX,Y然后再同时×c\times c即可

求解

∵aX+bY=1,gcd(a,b)=1∴aX+bY=gcd(a,b)我们不妨多列几个形如这样的方程,然后令下一层的a等于上一层的b,下一层的a等于上一层的a取模上一层的b一直列下去,总有一层的b会等于0,求解出最后一层的X,Y,再寻找现相邻两层X,Y的关系即可(注:我这里会用下标表示层数)举例:133X+403Y=1403X1+133Y1=1133X2+4Y2=14X3+Y3=1X3+0⋅Y3=1解得X3=1,Y3为任意整数,令Y3=0\because aX+bY=1,\text{gcd}(a,b)=1\\ \therefore aX+bY=\text{gcd}(a,b)\\ 我们不妨多列几个形如这样的方程,然后令下一层的a等于上一层的b,下一层的a等于上一层的a取模上一层的b\\ 一直列下去,总有一层的b会等于0,求解出最后一层的X,Y,再寻找现相邻两层X,Y的关系即可\\ (注:我这里会用下标表示层数)\\ 举例: 133X+403Y=1\\ 403X_1+133Y_1 =1\\ 133X_2+4Y_2=1\\ 4X_3+Y_3=1\\ X_3+0\cdot Y_3=1\\ 解得X_3=1,Y_3为任意整数,令Y_3=0 接下来我们研究Xn与Xn+1,Yn与Yn+1的关系对于Xn,Yn,有aXn+bYn=1对于Xn+1,Yn+1,有bXn+1+(a%b)Yn+1=1∴aXn+bYn=bXn+1+(a%b)Yn+1因为a,b大于0,所以根据余数的性质,原式变为aXn+bYn=bXn+1+(a−⌊ab⌋×b)Yn+1aXn+bYn=bXn+1+aYn+1−⌊ab⌋×bYn+1aXn+bYn=aYn+1+b(Xn+1−⌊ab⌋×Yn+1)∴Xn=Yn+1,Yn=Xn+1−Yn+1⌊ab⌋我们求解出最后一层的X,Y,然后拿这个公式反推出上一层的X,Y,一直推到第一层,就完事了!举例:266x≡4(mod806)266x+806y=4133x+403y=2133X+403Y=1403Y1+133Y1=1133X2+4Y2=14X3+Y3=1X4+0⋅Y4=1X4=1,Y4=0X3=Y4=0,Y3=X4−Y4×⌊41⌋=1−0×4=1X2=1,Y2=−33X1=−33,Y1=100X=100,Y=−33{x=X×2=200+403ky=Y×2=−66−133k接下来我们研究X_n与X_{n+1} ,Y_n与Y_{n+1} 的关系\\ 对于X_n,Y_n,有aX_n+bY_n=1\\ 对于X_{n+1} ,Y_{n+1} ,有bX_{n+1} +(a\%b)Y_{n+1} =1\\ \therefore aX_n+bY_n=bX_{n+1}+(a\%b)Y_{n+1}\\ 因为a,b大于0,所以根据余数的性质,原式变为aX_n+bY_n=bX_{n+1} +(a-\lfloor\frac{a}{b}\rfloor \times b)Y_{n+1}\\ aX_n+bY_n=bX_{n+1} +aY_{n+1}-\lfloor \frac{a}{b} \rfloor \times b Y_{n+1}\\ aX_n+bY_n= aY_{n+1}+ b(X_{n+1} -\lfloor \frac{a}{b} \rfloor \times Y_{n+1})\\ \therefore X_n=Y_{n+1},Y_n=X_{n+1}-Y_{n+1} \lfloor \frac{a}{b} \rfloor\\ 我们求解出最后一层的X,Y,然后拿这个公式反推出上一层的X,Y,一直推到第一层,就完事了!\\ 举例:\\ 266x\equiv4 \pmod {806}\\ 266x+806y=4\\ 133x+403y=2\\ 133X+403Y=1\\ 403Y_{1}+133Y_{1}=1\\ 133X_{2}+4Y_{2}=1\\ 4X_{3}+Y_{3}=1\\ X_{4}+0\cdot Y_{4}=1\\ X_{4}=1,Y_{4}=0\\ X_{3}=Y_{4}=0,Y_{3}=X_{4}-Y_{4}\times\lfloor\frac{4}{1}\rfloor=1-0\times 4=1\\ X_{2}=1,Y_{2}=-33\\ X_{1}=-33,Y_{1}=100\\ X=100,Y=-33\\ \begin{cases} x=X\times 2=200+403k\\ y=Y\times 2=-66-133k \end{cases}

小结

首先扩展欧几里得的运算过程与欧几里得算法的运算过程基本一致,所以求解ax≡c(modb)ax\equiv c \pmod b的时间复杂度也是O(log⁡min(a,b))O(\log \text{min}(a,b))

  1. 已知一个大于10001000的数末三位是123123,把该数乘了一个正整数xx,现在它的末三位为041041,问乘的数xx最小是多少?

    根据题意,可以列出方程:123x≡41(mod1000)123x+1000y=41123X+1000Y=11000X1+123Y1=1123X2+16Y2=116X3+11Y3=111X4+5Y4=15X5+Y5=1X6=1,Y6=0X5=0,Y5=1X4=1,Y4=−2X3=−2,Y3=3X2=3,Y2=−23X1=−23,Y1=187X=187,Y=−23{x=X×41=7667+1000ky=Y×41=−943−1000k∵x⩽1000∴x=(7667+1000k)%1000=667根据题意,可以列出方程:\\ 123x\equiv41 \pmod {1000}\\ 123x+1000y=41\\ 123X+1000Y=1\\ 1000X^1+123Y^1=1\\ 123X^2+16Y^2=1\\ 16X^3+11Y^3=1\\ 11X^4+5Y^4=1\\ 5X^5+Y^5=1\\ X^6=1,Y^6=0\\ X^5=0,Y^5=1\\ X^4=1,Y^4=-2\\ X^3=-2,Y^3=3\\ X^2=3,Y^2=-23\\ X^1=-23,Y^1=187\\ X=187,Y=-23\\ \begin{cases} x=X\times 41=7667+1000k\\ y=Y\times 41=-943-1000k\\ \end{cases}\\ \because x \leqslant 1000\\ \therefore x=(7667+1000k)\%1000=667
  2. 已知一个大于10001000的数末三位是603603,把该数乘了一个正整数xx,现在它的末三位为201201,问乘的数xx最小是多少?

    根据题意,可以列出方程:201x≡67(mod1000)201x+1000y=67201X+1000Y=11000X1+201Y1=1201X2+196Y2=1196X3+5Y3=15X4+Y4=1X5=1,Y5=0X4=0,Y4=1X3=1,Y3=−39X2=−39,Y2=40X1=40,Y1=−199X=−199,Y=40{x=X×67=−13333+1000ky=Y×67=2680−1000k∵x⩽1000∴x=(−13333+1000k)%1000=667根据题意,可以列出方程:\\ 201x\equiv67 \pmod {1000}\\ 201x+1000y=67\\ 201X+1000Y=1\\ 1000X^1+201Y^1=1\\ 201X^2+196Y^2=1\\ 196X^3+5Y^3=1\\ 5X^4+Y^4=1\\ X^5=1,Y^5=0\\ X^4=0,Y^4=1\\ X^3=1,Y^3=-39\\ X^2=-39,Y^2=40\\ X^1=40,Y^1=-199\\ X=-199,Y=40\\ \begin{cases} x=X\times 67=-13333+1000k\\ y=Y\times 67=2680-1000k\\ \end{cases}\\ \because x \leqslant 1000\\ \therefore x=(-13333+1000k)\%1000=667

代码实现

long long mod(long long a, long long m) { return (a % m) + m % m; }
void exgcd(long long & x, long long & y, long long a, long long b) {
  if (b == 0) {
    x = 1ll, y = 0ll;
    return;
  }
  exgcd(x, y, b, a % b);
  swap(x, y);
  y -= a / b * x;
}
tuple<pair<long long, long long>, pair<long long, long long>, bool> axbyc(long long a, long long b, long long c) {
  if (a < 0 && b < 0) {
    tuple<pair<long long , long long >, pair<long long , long long >, bool> result = axbyc(-a, -b, -c);
    return result;
  } else if (b < 0) {
    tuple<pair<long long, long long>, pair<long long, long long>, bool> result = axbyc(a, -b, c);
    get<1>(result).first = -get<1>(result).first;
    get<1>(result).second = -get<1>(result).second;
    return result;
  } else if (a < 0) {
    tuple<pair<long long, long long>, pair<long long, long long>, bool> result = axbyc(-a, b, c);
    get<0>(result).first = -get<0>(result).first;
    get<0>(result).second = -get<0>(result).second;
    return result;
  } else {
    ulong long temp = gcd(a, b);
    if (c % temp != 0) return {{0, 0}, {0, 0}, 0};
    a /= temp, b /= temp, c /= temp;
    long long x = 0, y = 0;
    exgcd(x, y, a, b);
    x *= c, y *= c;
    return {{x, b}, {y, -a}, 1};
  }
}
pair<long long, bool> SolveCongruenceEquation(long long a, long long b, long long mod) {  // ax ≡ b (mod)
  tuple<pair<long long, long long>, pair<long long, long long>, bool> result = axbyc(a, mod, b);
  if (get<2>(result) == 1) {
    pair<long long, long long> x = get<0>(result);
    return {Mod(x.first, x.second + x.second), 1};
  } else return {0, 0};
}

逆元

明确定义

在我们小学的时候,对实数a的倒数的定义是与相乘等于1的数,特别的,0没有倒数

令a的倒数为b,于是我们就可以用乘b来代替除以a的操作。

于是我们讨论在模意义下的倒数,也就是逆元

逆元的定义:满足ax≡1(modc)ax\equiv1 \pmod c的整数x,称为a在模c意义下的逆元,计为模cc下的a−1a^{-1}

注意:有的时候逆元并不存在。

求解

根据逆元的定义,可以用扩展欧几里得算法求解,还可以用其他算法求解,下文会做补充。

求解aa模pp的逆元的时间复杂度与扩展欧几里得算法一致,O(log⁡a)O(\log a)

逆元的作用、意义

  1. 已知一个大于10001000的数末三位是123123,小景把该数乘了一个正整数xx,现在它的末三位为041041,问她乘的数xx最小是多少?
  2. 已知一个大于10001000的数末三位是603603,小溪把该数乘了一个正整数xx,现在它的末三位为201201,问她乘的数xx最小是多少?

没错,又是这两题。不知道你有没有发现,这两题的答案竟然是一样的。

仔细想想,第一题是要把123变为041,相当于除以三,第二题是要把603变为201,也是除以三,并且都是模1000意义下的。

不妨列出方程3x≡1(mod1000)3x\equiv1 \pmod {1000},解得x=667,于是我们便知道了,除以3跟乘667的意义一致。

然后用通解的公式,解出x的最小正值即可。再举一个例子:已知一个大于10001000的数末三位是900900,将该数乘了一个正整数xx,现在它的末三位为300300,问她乘的数xx最小是多少?

x=667%(1000gcd(900,1000))=7x=667 \% (\frac{1000}{\text{gcd}(900,1000)})=7

我们不妨把问题抽象出来,并且建模:

有正整数A,B且B∣A但是不知道他们的值,只知道他们模m的值a=A%m,b=B%m问(AB)%m的值?当gcd(b,m)=1时因为A∣B,所以AB为正整数,令C=AB,则C为正整数∴A=BC∴a≡bC(modm)(①)∵gcd(b,m)=1∴b−1在模m下存在将①两边乘b−1,ab−1≡b×b−1×C(modm)∴ab−1≡C(modm)∴(AB) mod m=a×b−1 mod m所以,我们证明了当gcd(b,m)=1时,(AB)%m=a×b−1 mod m于是,我们得到了(AB)%m的通解:ab−1+km,因为(AB)%m<m,所以这个答案变成唯一解ab−1−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−还没完,当gcd(b,m)≠1时设d=gcd(b,m)∵a=A mod m,b=B mod m∴A=a+xm,B=b+ym根据gcd的性质,因为b=B mod m,所以gcd(B,m)=gcd(b,m)=d,又因为A∣B,∴gcd(A,m)=d设a′=ad,b′=bd,m′=md∴AB mod m=a+xmb+ym mod m=d×(a′+x×m′)d×(b′+y×m′)=a′+x×m′b′+y×m′令A′=a′+x×m′,B′=b′+y×m′问题转换为A′B′ mod m′,并且此时B′,m′互质,随后参照情况一,会得到x0+km′这一通解,但不同的是,这次是多解。有正整数A,B且B\mid A但是不知道他们的值,只知道他们模m的值a=A\%m,b=B\%m\\ 问(\frac{A}{B}) \% m的值?\\ 当\text{gcd}(b,m)=1时\\ 因为A|B,所以\frac{A}{B}为正整数,令C=\frac{A}{B},则C为正整数\\ \therefore A= BC \\ \therefore a\equiv bC \pmod m (①)\\ \because \text{gcd}(b,m)=1\\ \therefore b^{-1}在模m下存在\\ 将①两边乘b^{-1}, a b^{-1} \equiv b \times b^{-1} \times C \pmod m\\ \therefore ab^{-1}\equiv C \pmod m\\ \therefore (\frac{A}{B}) \bmod m = a\times b^{-1} \bmod m\\ 所以,我们证明了当\text{gcd}(b,m)=1时,(\frac{A}{B}) \% m=a\times b^{-1}\bmod m\\ 于是,我们得到了(\frac{A}{B}) \% m的通解:ab^{-1}+km,因为(\frac{A}{B}) \% m\lt m,所以这个答案变成唯一解ab^{-1}\\ ----------------------------------\\ 还没完,当\text{gcd}(b,m) \neq 1时\\ 设d=\text{gcd}(b,m)\\ \because a=A \bmod m, b= B \bmod m\\ \therefore A=a+xm,B=b+ym\\ 根据gcd的性质,因为b=B \bmod m,所以\text{gcd}(B,m)=\text{gcd}(b,m)=d,又因为A\mid B,\therefore \text{gcd}(A,m)=d\\ 设a^\prime =\frac{a}{d},b^\prime =\frac{b}{d},m^\prime = \frac{m}{d}\\ \therefore \frac{A}{B} \bmod m = \frac{a+xm}{b+ym} \bmod m =\frac{d\times (a^\prime+x\times m^\prime)}{d\times (b^\prime+y\times m^\prime)}=\frac{a^\prime+x\times m^\prime}{b^\prime+y\times m^\prime}\\ 令A^\prime =a^\prime +x\times m^\prime ,B^\prime =b^\prime +y\times m^\prime \\ 问题转换为\frac{A^\prime}{B^\prime} \bmod m^\prime ,并且此时B^\prime ,m^\prime 互质,随后参照情况一,会得到x_0+km^\prime 这一通解,但不同的是,这次是多解。

举例:

  • a=3,b=4,m=5时∵gcd(b,m)=1∴模m下b−1=4∴AB mod m=a×b−1 mod m=3×4 mod 5=2解释:2=84 mod 5a=3,b=4,m=5时\\ \because \text{gcd}(b,m)=1\\ \therefore 模m下b^{-1}=4\\ \therefore \frac{A}{B} \bmod m = a \times b^{-1} \bmod m= 3 \times 4 \bmod 5 = 2 解释: 2=\frac{8}{4} \bmod 5
  • a=2,b=4,m=6时∵gcd(b,m)≠1∴a=2,b=4,m=6⟺a=1,b=2,m=3∴模m下b−1=2∴AB mod m=a×b−1 mod m=1×2 mod 3=2,5解释:2=84 mod 6,5=204 mod 6a=2,b=4,m=6时 \\ \because \text{gcd}(b,m)\neq 1\\ \therefore a=2,b=4,m=6 \Longleftrightarrow a=1,b=2,m=3 \\ \therefore 模m下b^{-1}=2\\ \therefore \frac{A}{B} \bmod m = a \times b^{-1} \bmod m= 1 \times 2 \bmod 3 = 2,5 解释: 2=\frac{8}{4} \bmod 6,5=\frac{20}{4} \bmod 6

线性求逆元

如果要求11到n−1n-1的逆元,如果用扩展欧几里得定理或者其他的算法一个一个算时间复杂度为O(nlog⁡n)O(n \log n),太慢。

不妨考虑以下算法:

对于1到n−1的一个数i,设r=n mod i,将p用余数表示法表示为n=⌊ni⌋×i+r于是:⌊ni⌋×i+r≡0(modn)⌊ni⌋×i×(i−1×r−1)+r×(i−1×r−1)≡0(modn)⌊ni⌋×r−1+i−1≡0(modn)i−1≡−⌊ni⌋×r−1(modn)又∵1−1≡1(modp)∴i−1={当i=1时1当i≠1时(−⌊ni⌋×r−1) mod n∵r=n mod i∴r<i∴只需要从1到n−1顺序遍历一遍,当遍历到i时,r一定算出来了,所以可以O(1)求出模n下的i−1∴该算法的时间复杂度为O(n)对于1到n-1的一个数i, 设r=n \bmod i,将p用余数表示法表示为n=\lfloor \frac{n}{i} \rfloor\times i+r\\ 于是:\\ \lfloor \frac{n}{i} \rfloor \times i + r \equiv 0 \pmod n\\ \lfloor \frac{n}{i} \rfloor \times i \times (i^{-1}\times r^{-1}) + r \times (i^{-1}\times r^{-1}) \equiv 0 \pmod n\\ \lfloor \frac{n}{i} \rfloor \times r^{-1} +i^{-1} \equiv 0 \pmod n\\ i^{-1} \equiv - \lfloor \frac{n}{i} \rfloor \times r^{-1} \pmod n\\ 又\because 1^{-1} \equiv 1 \pmod p\\ \therefore i^{-1} = \begin{cases}当i=1时 & 1 \\当i\neq 1时 & (-\lfloor \frac{n}{i}\rfloor \times r^{-1}) \bmod n \end{cases}\\ \because r= n \bmod i\\ \therefore r<i\\ \therefore 只需要从1到n-1顺序遍历一遍,当遍历到i时,r一定算出来了,所以可以O(1)求出模n下的i^{-1}\\ \therefore 该算法的时间复杂度为O(n)

线性求逆元的代码

vector<int> inv(n + 1, 1);
for (int i = 2; i <= n; i++) inv[i] = mod(-n / i * inv[n % i], n);

阶乘求逆元

求0到n0到n阶乘模p的逆元

显然,1n!×n=1n−1\frac{1}{n!}\times n = \frac{1}{n-1}

∴(n−1)−1≡n−1×n(modp)\therefore (n-1)^{-1} \equiv n^{-1} \times n \pmod p

只需要先求出n的逆元,在从n到1遍历求逆元即可,时间复杂度为O(n)O(n)

阶乘求逆元的代码

vector<int> inv(n + 1);
inv[n] = inv(n, p);
for (int i = n; i >= 1; i--) inv[n - 1] = (inv[n] * i) % p;

中国剩余定理(孙子定理)

定义

对于形如{x≡a1(modm1)x≡a2(modm2)…x≡an(modmn)\begin{cases}x\equiv a_1\pmod {m_1}\\x\equiv a_2 \pmod {m_2}\\\dots\\x\equiv{a_n}\pmod {m_n}\end{cases}的方程组,称为线性同余方程组,而中国剩余定理 (Chinese Remainder Theorem) 算法可以求解

具体的,当gcd(m1,m2)=gcd(m2,m3)=⋯=gcd(mn−1,mn)=1\text{gcd}(m_1,m_2)=\text{gcd}(m_2,m_3)=\cdots=\text{gcd}(m_{n-1},m_n)=1时该方程组有解。

核心思想

不妨令M=Πi=1nmiM=\Pi _{i=1} ^{n} m_i,Mi=MmiM_i=\frac{M}{m_i} 。我们发现kMikM_i当j≠ij\neq i时,kMi≡0(modmj)kM_i\equiv 0 \pmod {m_j},接下来令kMi≡ai(modmi)kM_i\equiv a_i \pmod {m_i},就可以达到kMikM_i对于第ii条是正确的,并且对于不是第ii条的方程不影响。我们不妨将1至n1至n的所有kMikM_i求解并求和,就可以得到一个解,再将其取模MM,就是答案的最小正值。

举例:

{x≡2(mod3)x≡3(mod5)x≡2(mod7)35k≡2(mod3)解得k=121k≡3(mod5)解得k=315k≡2(mod7)解得k=2x1=35×1+21×3+15×2=128x=128 mod (3×5×7)=23\begin{array}{c} \left\{\begin{matrix} x \equiv 2 \pmod 3\\ x \equiv 3 \pmod 5\\ x \equiv 2 \pmod 7\\ \end{matrix}\right.\\ 35k\equiv2 \pmod 3\\ 解得k=1\\ 21k\equiv3 \pmod 5\\ 解得k=3\\ 15k\equiv2 \pmod 7\\ 解得k=2\\ x_1=35\times 1+21 \times 3 + 15 \times 2=128\\ x=128 \bmod (3\times 5 \times 7)=23 \end{array}

因为mm两两互质,所以不用担心kMi≡ai(modmi)kM_i\equiv a_i \pmod {m_i}这些方程无解

小结

是否存在21个连续的正整数,使得其中每个数均被至少一个2∼132 \sim 13 的素数整除?若有,请写出这21个正整数的中间数的最小值;若没有,请说明理由。

解:不妨设中间数为x假如x能被某些2到13的质数整除:p1,p2⋯pn那么对于1⩽i⩽n,pi∣(x±k×pi)我们只需关注x±10之内的数,也就是说x不必整除11,13那便假设2×3×5×7∣x则:数字:x−10x−9x−8x−7x−6x−5x−4x−3x−2x−1xx+1x+2x+3x+4x+5x+6x+7x+8x+9x+10能整除的质数:2,53272,35232?2,3,5,7?23252,37232,5我们这样做的好处是现在只有x−1,x+1没有整除一个素数,怎么办呢?显然,2,3,5,7∤x−1,x+1,那就让11,13分别整除x−1,x+1情况一:11∣x−1,13∣x+1∵2×3×5×7∣x,(x−1)∣11,(x+1)∣13∴x−1≡0(mod11),x+1≡0(mod13)∴可以列出方程组:{x≡1(mod11)x≡12(mod13)x≡0(mod210)可以根据中国剩余定理求解,解得x=9450+30030k答:x=9450\begin{array}{c} 解:\\ 不妨设中间数为x\\ 假如x能被某些2到13的质数整除:p_1,p_2\cdots p_n\\ 那么对于1\leqslant i \leqslant n, p_i\mid(x\pm k\times p_i)\\ 我们只需关注x\pm 10 之内的数,也就是说x不必整除11,13\\ 那便假设2\times 3\times 5\times 7 \mid x\\ 则:\\ \begin{matrix} 数字: x-10 & x-9 & x-8 & x-7 & x-6 & x-5 & x-4 & x-3 & x-2 & x-1 & x & x+1 & x+2 & x+3 & x+4 & x+5 & x+6 & x+7 & x+8 & x+9 & x+10 \\ 能整除的质数: 2,5 & 3 & 2 & 7 & 2,3 & 5 & 2 & 3 & 2 & ? & 2,3,5,7 & ? & 2 & 3 & 2 & 5 & 2,3 & 7 & 2 & 3 & 2,5 \\ \end{matrix}\\ 我们这样做的好处是现在只有x-1,x+1没有整除一个素数,怎么办呢?\\ 显然,2,3,5,7\nmid x-1,x+1,那就让11,13分别整除x-1,x+1\\ 情况一:11\mid x-1 ,13 \mid x+1\\ \because 2 \times 3 \times 5 \times 7 \mid x,(x-1) \mid 11,(x+1)\mid 13\\ \therefore x-1 \equiv 0 \pmod {11},x+1 \equiv 0 \pmod {13}\\ \therefore 可以列出方程组: \left\{\begin{matrix} x \equiv 1 \pmod {11}\\ x \equiv 12 \pmod {13}\\ x \equiv 0 \pmod {210} \end{matrix}\right.\\ 可以根据中国剩余定理求解,解得x=9450+30030k\\ 答:x=9450 \end{array}\\

代码实现

pair<long long, bool> SolveCongruenceEquation(long long a, long long b, long long mod);  // 求解ax ≡ b (mod)
long long ChineseRemainderTheorem(vector<long long>& rmdi, vector<long long>& modi) {
  long long factor = 1, result = 0;
  for (long long x : modi) factor *= x;
  for (int i = 0; i < rmdi.size(); i++) result += factor / modi[i] * SolveCongruenceEquation(factor / modi[i], rmdi[i], modi[i]).first;
  return result % factor;
}

欧拉函数及定理

定义

ϕ(x)\phi(x):欧拉函数,即1∼x1\sim x中与xx互质的数的个数

特别的,ϕ(1)=1\phi (1)=1

性质

  1. ϕ(1)=1\phi(1)=1
  2. ϕ(p)=p−1\phi(p)=p-1(p为质数)
  3. ϕ(pb)=pb−pb−1\phi(p^b)=p^b-p^{b-1}(p为质数)
  4. 欧拉函数是积性函数,即若a,b互质,ϕ(a×b)=ϕ(a)×ϕ(b)\phi(a\times b)=\phi(a)\times \phi(b)
  5. ϕ(x)=x×Πi=1n(1−1pi)\phi(x)=x\times \Pi _{i=1} ^n (1-\frac{1}{p_i})(n为x分解质因数后的质数个数)
  6. 欧拉定理:当a与x互质时,aϕ(x)≡1(modx)a^{\phi(x)}\equiv 1 \pmod x

性质的证明

性质3的证明:
回归定义,ϕ(pb)是1∼pb中与pb互质的数的个数即ϕ(pb)=pb−(1∼pb中与pb不互质的数的个数)那么1∼pb中与pb不互质的数到底有多少呢?因为p为质数,所以不互质pb的数一定是p的倍数:1p,2p,3p,⋯pb−1×p,一共有pb−1个∴ϕ(pb)=pb−pb−1回归定义,\phi(p^b)是1\sim p^b中与p^b互质的数的个数\\ 即\phi(p^b)=p^b-(1\sim p^b中与p^b不互质的数的个数)\\ 那么1\sim p^b中与p^b不互质的数到底有多少呢?\\ 因为p为质数,所以不互质p^b的数一定是p的倍数:1p,2p,3p,\cdots p^{b-1}\times p,一共有p^{b-1}个\\ \therefore \phi(p^b)=p^b-p^{b-1}\\
性质4的证明

还是刚才的那个思想,ϕ(a×b)=1到ab\phi(a\times b)=1 到 ab中与abab互质的数的个数
我们列出1∼ab1 \sim ab的所有整数:

原数原数模aa的结果原数模bb的结果
11 mod a1 \bmod a1 mod b1 \bmod b
22 mod a2 \bmod a2 mod b2 \bmod b
⋮⋮⋮
abab0000

将右两列组成数对:(x mod a,x mod b)(x \bmod a, x \bmod b)
因为gcd⁡(a,b)=1\gcd(a,b)=1,有:
gcd⁡(x,ab)=1  ⟺  gcd⁡(x,a)=1 且 gcd⁡(x,b)=1  ⟺  gcd⁡(x mod a,a)=1 且 gcd⁡(x mod b,b)=1\gcd(x, ab) = 1 \iff \gcd(x, a) = 1 \ \text{且}\ \gcd(x, b) = 1 \iff \gcd(x \bmod a, a) = 1\ \text{且}\ \gcd(x \bmod b, b) = 1

所以,当且仅当xx同时满足以下两个条件时,xx与abab互质:

{gcd⁡(x mod a,a)=1gcd⁡(x mod b,b)=1\begin{cases} \gcd(x \bmod a, a) = 1 \\ \gcd(x \bmod b, b) = 1 \end{cases}

因为aa和bb互质,所有数对(x mod a,x mod b)(x \bmod a, x \bmod b)互不相同(即不同xx对应不同数对),因此原数xx与数对(u,v)(u,v)一一对应。

观察数对中的分量:

  • 模aa的余数取值范围是0∼(a−1)0 \sim (a-1),其中与aa互质的数有ϕ(a)\phi(a)个
  • 模bb的余数取值范围是0∼(b−1)0 \sim (b-1),其中与bb互质的数有ϕ(b)\phi(b)个

要同时满足两个互质条件,数对的选择数量为:
ϕ(a×b)=ϕ(a)×ϕ(b)\phi(a \times b) = \phi(a) \times \phi(b)


举例: a=3,b=5a=3, b=5,则ab=15ab=15

原数模3余数模5余数与15互质条件
111是
222是
303否
414是
520否
601否
712是
823是
904否
1010否
1121是
1202否
1313是
1424是
1500否

表中加粗表示满足与该模数互质:

  • 模3余数中与3互质的有2个:{1,2} (ϕ(3)=2\phi(3)=2)
  • 模5余数中与5互质的有4个:{1,2,3,4} (ϕ(5)=4\phi(5)=4)
    同时满足两个条件的数有8个,即ϕ(15)=8=ϕ(3)×ϕ(5)\phi(15)=8=\phi(3)\times\phi(5)
性质5的证明
想要求x的值,不妨将它质因数分解,假设x=Πi=1npiaiϕ(x)=ϕ(Πi=1npiai)∵欧拉函数是积性函数∴ϕ(x)=Πi=1nϕ(piai)又∵pi为质数∴ϕ(x)=Πi=1n(piai−piai−1)=Πi=1npiai(1−1pi)=Πi=1npiai×Πi=1n(1−1pi)=xΠi=1n(1−1pi)证毕−−−−−−−−−−举例:计算ϕ(1000)1000=23×53ϕ(1000)=1000×(1−12)×(1−15)=1000×12×45=400想要求x的值,不妨将它质因数分解,假设x=\Pi _{i=1}^n p_i^{a_i}\\ \phi(x)=\phi(\Pi _{i=1}^n p_i^{a_i})\\ \because 欧拉函数是积性函数\\ \therefore \phi(x)=\Pi _{i=1} ^n \phi(p_i^{a_i})\\ 又\because p_i为质数\\ \therefore \phi(x)=\Pi _{i=1} ^n (p_i^{a_i}-p_i^{a_i-1})=\Pi _{i=1} ^n p_i^{a_i}(1-\frac{1}{p_i})=\Pi _{i=1} ^n p_i^{a_i} \times \Pi_{i=1}^n (1-\frac{1}{p_i})=x \Pi_{i=1} ^n (1-\frac{1}{p_i})\\ 证毕\\ ----------\\ 举例:\\ 计算\phi(1000)\\ 1000=2^3\times 5^3\\ \phi(1000)=1000\times (1-\frac{1}{2})\times (1-\frac{1}{5})=1000\times \frac{1}{2}\times \frac{4}{5}=400
欧拉定理的证明
假设a与x互质,且0⩽a<x。考虑1至x中与x互质的所有整数,记为b1,b2,…,bϕ(x)。定义ci=bi×a和di=ci mod x。序列b满足:{当i≠j时, bi≠bj,gcd(bi,x)=1.分析di的性质:问题:di=dj是否可能成立(对于i≠j)?反证法:假设di=dj(其中i≠j)。则ci≡cj(modx),即(bi×a≡bj×a(modx))。由同余性质,得a(bi−bj)≡0(modx)。由于gcd(a,x)=1,因此bi−bj≡0(modx)。又因1⩽bi,bj⩽x,故bi=bj,与条件i≠j矛盾。因此,di≠dj,即d满足互异性。互质性:gcd(di,x)=gcd(ci mod x,x)=gcd(ci,x)=gcd(a×bi,x)。由于gcd(a,x)=1且gcd(bi,x)=1,有gcd(a×bi,x)=1。因此,gcd(di,x)=1,即d满足互质性。综上,序列d与b除了顺序可能不同,其他均相同。−−−−−−−−−−−−−−−示例:设x=5,则与5互质的数为b=1,2,3,4(即ϕ(5)=4)。取a=3,有ci=bi×3=[3,6,9,12]。计算di=ci mod 5=[3,1,4,2],与b相同但顺序不同。−−−−−−−−−−−−−−−欧拉定理的推导:由于d是b的重新排列,其乘积满足:b1b2⋯bϕ(x)≡d1d2⋯dϕ(x)(modx).又因di≡abi(modx),故:d1d2⋯dϕ(x)≡(ab1)(ab2)⋯[abϕ(x)](modx).因此,b1b2⋯bϕ(x)≡aϕ(x)[b1b2⋯bϕ(x)](modx).整理得:[aϕ(x)−1]b1b2⋯bϕ(x)≡0(modx).由于每个bi与x互质,其乘积b1b2⋯bϕ(x)也与x互质(因数均互质)。故aϕ(x)−1≡0(modx),∴aϕ(x)≡1(modx).证毕假设 a 与 x 互质,且 0 \leqslant a < x。考虑 1 至 x 中与 x 互质的所有整数,记为 b_1, b_2, \dots, b_{\phi(x)}。定义c_i = b_i \times a 和 d_i = c_i \bmod x。\\ 序列 b 满足: \\ \begin{cases} 当 i \neq j 时, \ b_i \neq b_j, \\ \text{gcd}(b_i, x) = 1. \end{cases}\\ 分析 d_i 的性质:\\ 问题:d_i = d_j 是否可能成立(对于 i \neq j)? \\ 反证法: 假设 d_i = d_j(其中 i \neq j)。 \\ 则 c_i \equiv c_j \pmod{x},即 (b_i \times a \equiv b_j \times a \pmod{x})。 \\ 由同余性质,得 a(b_i - b_j) \equiv 0 \pmod{x}。 \\ 由于 \text{gcd}(a, x) = 1,因此 b_i - b_j \equiv 0 \pmod{x}。 \\ 又因 1 \leqslant b_i, b_j \leqslant x,故 b_i = b_j,与条件 i \neq j 矛盾。 因此,d_i \neq d_j,即 d 满足互异性。\\ 互质性:\text{gcd}(d_i, x) = \text{gcd}(c_i \bmod x, x) = \text{gcd}(c_i, x) = \text{gcd}(a \times b_i, x)。 \\ 由于 \text{gcd}(a, x) = 1 且 \text{gcd}(b_i, x) = 1,有 \text{gcd}(a \times b_i, x) = 1。\\ 因此,\text{gcd}(d_i, x) = 1,即 d 满足互质性。\\ 综上,序列 d 与 b 除了顺序可能不同,其他均相同。\\ ---------------\\ 示例:\\ 设 x = 5,则与 5 互质的数为 b = 1, 2, 3, 4(即 \phi(5) = 4)。 \\ 取 a = 3,有 c_i = b_i \times 3 = [3, 6, 9, 12]。 \\ 计算 d_i = c_i \bmod 5 = [3, 1, 4, 2],与 b 相同但顺序不同。\\ ---------------\\ 欧拉定理的推导: \\ 由于 d 是 b 的重新排列,其乘积满足: \\ b_1 b_2 \cdots b_{\phi(x)} \equiv d_1 d_2 \cdots d_{\phi(x)} \pmod{x}.\\ 又因 d_i \equiv a b_i \pmod{x},故: \\ d_1 d_2 \cdots d_{\phi(x)} \equiv (a b_1)(a b_2)\cdots[a b_{\phi(x)}] \pmod{x}.\\ 因此, \\ b_1 b_2 \cdots b_{\phi(x)} \equiv a^{\phi(x)} [b_1 b_2 \cdots b_{\phi(x)}] \pmod{x}.\\ 整理得: \\ [a^{\phi(x)} - 1] b_1 b_2 \cdots b_{\phi(x)} \equiv 0 \pmod{x}.\\ 由于每个 b_i 与 x 互质,其乘积 b_1 b_2 \cdots b_{\phi(x)} 也与 x 互质(因数均互质)。 \\ 故a^{\phi(x)} - 1 \equiv 0 \pmod{x}, \\ \therefore a^{\phi(x)} \equiv 1 \pmod{x}.\\ 证毕

欧拉定理

当gcd(a,n)=1时,ab≡ab mod ϕ(n)(modn)\text{gcd}(a,n)=1时,a^b\equiv a^{b \bmod \phi(n)} \pmod n

证明:

设r=b mod ϕ(n),k=b−rϕ(n)∴ab≡akϕ(x)+r≡[aϕ(x)]k×ar≡1k×ar≡ar≡ab mod ϕ(n)(modn)设r=b \bmod \phi(n),k=\frac{b-r}{\phi(n)}\\ \therefore a^b \equiv a^{k\phi(x)+r}\equiv [a^{\phi(x)}]^{k}\times a^r \equiv 1^k \times a^r \equiv a^r \equiv a ^{b \bmod \phi(n)} \pmod n\\

小结

  1. 计算7105 mod 107^{105} \bmod 10

    ∵gcd(7,100)=1∴7ϕ(10)≡74≡1 mod 10∴7105≡7100+1≡(74)26×71≡7(mod10)答:7我们发现欧拉定理的有降幂的作用,也就是欧拉定理的推论:gcd(a,n)=1时,ab≡ab mod ϕ(n)(modn)你可能会问,若gcd(a,n)=1时能不能降幂呢?后文会讲到「扩展欧拉定理」再补充一句,b mod ϕ(n)是欧拉定理做到降幂的极限,不是最小的值!!!\because \text{gcd}(7,100)=1\\ \therefore 7^{\phi(10)}\equiv 7^4\equiv1 \bmod 10\\ \therefore 7^{105}\equiv7^{100 +1} \equiv {(7^4)}^{26} \times 7^1 \equiv 7 \pmod {10}\\ 答:7\\ 我们发现欧拉定理的有降幂的作用,也就是欧拉定理的推论:\text{gcd}(a,n)=1时,a^b\equiv a^{b \bmod \phi(n)} \pmod n\\ 你可能会问,若\text{gcd}(a,n)=1时能不能降幂呢?\\ 后文会讲到「扩展欧拉定理」\\ 再补充一句,b \bmod \phi(n)是欧拉定理做到降幂的极限,不是最小的值!!!
  2. 103210321032^{1032}的最后两位?

    其实就是要我们求10321032≡?(mod100)首先,10321032≡321032(mod100)设x≡321032(mod100),则:x≡0(mod4)x≡321032 mod ϕ(25)≡3212≡712≡496≡(−1)6≡1(mod25)有方程组:{x≡0(mod4)x≡1(mod25)根据中国剩余定理,解得x≡76(mod100)∴10321032≡76(mod100)通过这个例题,我们学会了当底数与模数不互质时,可以用中国剩余定理求解,这就是为什么要把这一章放在中国剩余定理之后的原因。更具体的,令x=ab mod m,将模数m质因数分解p1e1×p2e2×⋯pnen,先用欧拉定理求解ab≡x(modp1e1),再用中国剩余定理把互质的模数拼起来,就能求解出答案了(因为当i≠j时,gcd(piei,pjei)=1)其实就是要我们求1032^{1032}\equiv ? \pmod {100}\\ 首先,1032^{1032}\equiv 32^{1032} \pmod {100}\\ 设x\equiv 32^{1032} \pmod {100},则:\\ x\equiv 0 \pmod 4\\ x\equiv 32^{1032 \bmod \phi(25)}\equiv 32^{12}\equiv 7^{12} \equiv 49^6 \equiv (-1)^6 \equiv 1 \pmod {25}\\ \\ 有方程组:\begin{cases} x \equiv 0 \pmod 4 \\ x \equiv 1 \pmod {25} \end{cases}\\ 根据中国剩余定理,解得x\equiv 76 \pmod {100}\\ \therefore 1032^{1032}\equiv 76 \pmod {100}\\ 通过这个例题,我们学会了当底数与模数不互质时,可以用中国剩余定理求解,这就是为什么要把这一章放在中国剩余定理之后的原因。\\ 更具体的,令x=a^b \bmod m,将模数m质因数分解p_1^{e_1}\times p_2^{e_2}\times \cdots p_n^{e_n},\\ 先用欧拉定理求解a^{b}\equiv x \pmod {p_1^{e_1}},再用中国剩余定理把互质的模数拼起来,就能求解出答案了(因为当i\neq j时,\text{gcd}(p_i^{e_i},p_j^{e_i})=1)\\
  3. 定义{f(1)=1当n为正整数时f(n)=nf(n−1)\begin{cases}f(1)=1 \\当n为正整数时\quad f(n)=n^{f(n-1)} \end{cases},求f(2008)f(2008)的最后3位。

    求200820072006⋯ mod 1000(注:这是2008(2007(2006⋯ )) mod 1000的简化记法)因为gcd(2008,1000)≠1∴先求出200820072006⋯ mod 8和200820072006⋯ mod 125,再用中国剩余定理拼起来。设x=200820072006⋯ mod 1000200820072006⋯≡(2×1004)20072006⋯≡220072006⋯×100420072006⋯≡0(mod8)...[1]200820072006⋯≡2008[20072006⋯ mod ϕ(125)]≡2008[20072006⋯ mod 100]≡2008[72006⋯ mod 100](mod125)接下来求出720062005⋯ mod 100即可∵gcd(7,100)=1接下来观察7的幂次最后两位的规律:70≡1(mod100)71≡7(mod100)72≡49(mod100)73≡43(mod100)计算200620052004⋯ mod 4显然,它=0∴720062005⋯ mod 100=1∴x≡2008[72006⋯ mod 100]≡20081≡8(mod125)...[2]{x≡0(mod8)x≡8(mod125)解得x≡8(mod1000)答:008求2008^{2007^{2006^\cdots}} \bmod 1000 (注:这是2008^{(2007^{(2006^\cdots)})} \bmod 1000的简化记法)\\ 因为\text{gcd}(2008,1000)\neq 1\\ \therefore 先求出2008^{2007^{2006^\cdots}} \bmod 8和2008^{2007^{2006^\cdots}} \bmod 125,再用中国剩余定理拼起来。\\ 设x=2008^{2007^{2006^\cdots}} \bmod 1000\\ 2008^{2007^{2006^\cdots}} \equiv (2\times 1004)^{2007^{2006^\cdots}} \equiv 2^{2007^{2006^\cdots}} \times 1004^{2007^{2006^\cdots}} \equiv 0 \pmod 8 \quad ...[1]\\ 2008^{2007^{2006^\cdots}}\equiv 2008^{[2007^{2006^\cdots} \bmod \phi(125)]} \equiv 2008^{[2007^{2006^\cdots} \bmod 100]} \equiv 2008^{[7^{2006^\cdots} \bmod 100]} \pmod {125} \\ 接下来求出7^{2006^{2005\cdots}} \bmod 100即可\\ \because \text{gcd}(7,100)=1\\ 接下来观察7的幂次最后两位的规律:\\ 7^0 \equiv 1 \pmod {100} \\ 7^1 \equiv 7 \pmod {100} \\ 7^2 \equiv 49 \pmod {100} \\ 7^3 \equiv 43 \pmod {100} \\ 计算2006^{2005^{2004^\cdots}} \bmod 4\\ 显然,它=0\\ \therefore 7^{2006^{2005^\cdots}} \bmod 100=1\\ \therefore x \equiv 2008^{[7^{2006^\cdots} \bmod 100]} \equiv 2008^1 \equiv 8 \pmod {125} \quad ...[2]\\ \begin{cases} x\equiv 0 \pmod 8\\ x\equiv 8 \pmod {125} \end{cases}\\ 解得x\equiv 8 \pmod {1000}\\ 答:008
  4. 求证当 n⩾3n \geqslant 3 时,nnn≡nn(mod16)n^{n^n} \equiv n^n \pmod{16}

    证明: 分两种情况讨论:

    1. nn为偶数:

      ∵n⩾3且2∣n∴n⩾4又∵n⩾2,nn⩾2 ∴n(nn)≡nn≡0(mod16)\because n\geqslant 3 且 2\mid n\\ \therefore n\geqslant 4\\ 又\because n\geqslant 2,n^n\geqslant 2\\\ \therefore n^{(n^n)}\equiv n^n \equiv 0 \pmod {16}
    2. nn为奇数:

      不妨先证明当n为奇数时,n4≡1(mod16)设n=2k+1∵(2k+1)4=16k4+32k3+24k2+8k+1∴n4≡16k4+32k3+24k2+8k+1≡8k2+8k+1≡16×(k+1)×k2+1≡1(mod16)(因为(k+1)k2=Ck+12是整数)∵2∤n,n4≡1(mod16)∴n(nn)≡nn(mod16)⟺nn≡n(mod4)⟺n≡1(mod2)⟺1≡0(mod1)证毕不妨先证明当n为奇数时,n^4 \equiv 1 \pmod {16}\\ 设n=2k+1\\ \because (2k+1)^4=16k^4+32k^3+24k^2+8k+1\\ \therefore n^4 \equiv 16k^4+32k^3+24k^2+8k+1 \equiv 8k^2+8k+1 \equiv 16\times \frac{(k+1)\times k}{2}+1 \equiv 1 \pmod {16} (因为\frac{(k+1)k}{2}=C_{k+1}^2是整数)\\ \because 2\nmid n,n^4\equiv 1\pmod {16}\\ \therefore n^{(n^n)}\equiv n^n \pmod {16}\Longleftrightarrow n^n \equiv n \pmod 4 \Longleftrightarrow n\equiv 1 \pmod 2 \Longleftrightarrow 1\equiv 0 \pmod 1\\ 证毕

    你可能会发现,欧拉函数的降幂并不一定是最优的,就像这个例子:当n⩾3n\geqslant 3时n4≡1(mod16)n^4\equiv 1 \pmod {16}

  5. 求证当 n≥3n \geq 3 时,1989∣nnnn−nnn1989 \mid n^{n^{n^n}} - n^{n^n}

    证明: 由 1989=9×13×171989 = 9 \times 13 \times 17,只需证模 9,13,179,13,17 成立:

    1. 模 99:
      • 若 3∣n3 \mid n,则 nnn^n 和 nnnn^{n^n} 均被 99 整除(∵ n≥3n \geq 3)。
      • 若 3∤n3 \nmid n,则需 nn≡nnn(mod6)n^n \equiv n^{n^n} \pmod{6}。 ∵ 模 22 和模 33 均同余(奇偶性一致且 n≡±1(mod3)n \equiv \pm 1 \pmod{3}), ∴ 成立。
    2. 模 1313:
      • 若 13∣n13 \mid n,则两边模 1313 为 00。
      • 若 13∤n13 \nmid n,则需 nn≡nnn(mod12)n^n \equiv n^{n^n} \pmod{12}。 ∵ 模 44(偶数整除/奇数同余)和模 33 均同余, ∴ 成立。
    3. 模 1717:
      • 若 17∣n17 \mid n,则两边模 1717 为 00。
      • 若 17∤n17 \nmid n,则需 nn≡nnn(mod16)n^n \equiv n^{n^n} \pmod{16}, 由问题4结论成立。

    综上,原式被 19891989 整除。

    具体证明就留作课后作业吧∼\sim

欧拉定理求逆元,费马小定理,扩展欧拉定理

欧拉定理求逆元

根据欧拉定理,当gcd(a,n)时,\text{gcd}(a,n)时, aϕ(n)≡1(modn)a^{\phi(n)}\equiv 1 \pmod n

∴a×aϕ(n)−1≡1(modn)\therefore a\times a^{\phi(n)-1}\equiv 1 \pmod n

∴aϕ(n)−1+k×n\therefore a^{\phi(n)-1}+k\times n是aa模nn的逆元

费马小定理

当nn为质数且n∤an \nmid a时,an−1≡1(modn)a^{n-1}\equiv 1 \pmod n

证明(有多种证明方法,这里给出一种最简单的):

∵n∤a,n是质数∴gcd(a,n)=1根据欧拉定理,∴aϕ(n)≡1(modn)∵n为质数∴ϕ(n)=n−1∴an−1≡1(modn)证毕\because n\nmid a , n是质数\\ \therefore \text{gcd}(a,n)=1\\ 根据欧拉定理,\therefore a^{\phi(n)}\equiv 1 \pmod n \\ \because n为质数\\ \therefore \phi(n)=n-1\\ \therefore a^{n-1}\equiv 1 \pmod n\\ 证毕

费马小定理求逆元

根据费马小定理,当nn为质数时,

根据费马小定理,有an−1≡1(modn)根据费马小定理,有a^{n-1} \equiv 1 \pmod n

∴a×an−2≡1(modn)\therefore a\times a^{n-2} \equiv 1 \pmod n

∴(an−2+kn)是a模n的逆元\therefore (a^{n-2}+kn)是a模n的逆元

扩展欧拉定理

定理

∀a,b,c∈N+,满足ab≡{abb<ϕ(c)ab mod ϕ(c)+ϕ(c)b⩾ϕ(c)(modc)\forall a,b,c \in \mathbb{N^+},满足 a^b \equiv \begin{cases} a^b & b \lt \phi(c)\\ a^{b\bmod \phi(c)+\phi(c)} & b \geqslant \phi(c) \end{cases} \pmod c

第一行表示ab mod ca^b \bmod c当b<ϕ(c)b \lt \phi(c)时无法用欧拉定理降幂。

定理的证明

接下来我们证明第二行ab≡ab mod ϕ(c)+ϕ(c)(modc)a^b \equiv a^{b \bmod \phi(c) +\phi(c)} \pmod c

  • 先证明两个引理:

    1. 对于如果p,qp,q互质,且同时满足x≡y(modp),x≡y(modq)x\equiv y \pmod p ,x\equiv y \pmod q 那么有x≡y(modpq)x\equiv y \pmod {pq}

      根据同余的性质,有(x−y)=k1p,(x−y)=k2q其中k1,k2都是整数∵(x−y)是p的倍数,也是q的倍数∴(x−y)至少是p,q的最小公倍数的倍数∴lcm(p,q)∣(x−y)又∵p,q互质∴pq∣(x−y)∴x≡y(modpq)根据同余的性质,有(x-y) = k_1 p,(x-y) = k_2 q\\ 其中k_1,k_2都是整数\\ \because (x-y)是p的倍数,也是q的倍数\\ \therefore (x-y)至少是p,q的最小公倍数的倍数\\ \therefore \text{lcm}(p,q) \mid (x-y)\\ 又\because p,q互质\\ \therefore pq\mid (x-y)\\ \therefore x\equiv y \pmod {pq}
    2. 对于素数的整数次幂pep^e,有ϕ(pe)⩾e\phi(p^e)\geqslant e

      只需证明极端情况:p最小时成立即可,即p=2即证2e−1⩾e注意到,当e=1时显然成立假设不等式在k处成立,需证它在(k+1)处也成立(k大于等于1)∵2k−1⩾k∴2k⩾2k又∵k⩾1∴2k⩾k+1∴2k⩾2k⩾k+1∴证毕只需证明极端情况:p最小时成立即可,即p=2\\ 即证2^{e-1}\geqslant e\\ 注意到,当e=1时显然成立\\ 假设不等式在k处成立,需证它在(k+1)处也成立 \quad (k大于等于1)\\ \because 2^{k-1} \geqslant k\\ \therefore 2^k \geqslant 2k\\ 又\because k \geqslant 1\\ \therefore 2k \geqslant k+1\\ \therefore 2^k \geqslant 2k \geqslant k+1\\ \therefore 证毕
  • 将cc质因数分解,设c=p1e1p2e2⋯pkekc=p_1^{e_1}p_2^{e_2}\cdots p_k^{e_k}

​ 根据同余性质,若p,q互质,且x≡y(modp)x\equiv y \pmod p,x≡y(modq)x\equiv y \pmod q,那么x≡y(modpq)x\equiv y \pmod {pq}

​ 根据引理1,只需证明对于每个pieip_i^{e_i},满足ab≡ab mod ϕ(c)+ϕ(c)(modpiei)a^b \equiv a^{b\bmod \phi(c)+\phi(c)} \pmod {p_i^{e_i}}

  1. gcd(a,piei)=1\text{gcd}(a,p_i^{e_i})=1时

    根据欧拉定理aϕ(piei)≡1(modpiei)因为欧拉函数是积性函数∴aϕ(c)≡aϕ(piei)×k≡1(modpiei)根据余数表示法,有b=⌊bϕ(c)⌋×ϕ(c)+b mod ϕ(c)∴ab≡a⌊bϕ(c)⌋×ϕ(c)+b mod ϕ(c)≡a⌊bϕ(c)⌋ϕ(c)×ab mod ϕ(c)≡1×ab mod ϕ(c)≡ab mod ϕ(c)×aϕ(c)≡ab mod ϕ(c)+ϕ(c)(modpiei)根据欧拉定理\\ a^{\phi(p_i^{e_i})}\equiv 1 \pmod {p_i^{e_i}}\\ 因为欧拉函数是积性函数\\ \therefore a^{\phi(c)}\equiv a^{\phi(p_i^{e_i})\times k} \equiv 1 \pmod {p_i^{e_i}}\\ 根据余数表示法,有b=\lfloor \frac{b}{\phi(c)} \rfloor \times \phi(c) + b \bmod \phi(c)\\ \therefore a^b \equiv a^{\lfloor \frac{b}{\phi(c)} \rfloor \times \phi(c) + b\bmod \phi(c)} \equiv a^{\lfloor \frac{b}{\phi(c)} \rfloor \phi(c)} \times a^{b\bmod \phi(c)}\equiv 1\times a^{b \bmod \phi(c)}\equiv a^{b \bmod \phi(c)}\times a^{\phi(c)}\equiv a^{b \bmod \phi(c) +\phi(c)} \pmod {p_i^{e_i}}
  2. gcd(a,piei)≠1\text{gcd}(a,p_i^{e_i}) \neq 1时

    ∵pi为质数,gcd(a,piei)∴pi∣a∴设a=npi∵b⩾ϕ(c),ϕ(piei)⩾ei,欧拉函数是积性函数∴有如下连等式b⩾ϕ(c)⩾ϕ(piei)⩾ei∵a=npi∴ab=(npi)b=nb×pib−ei×piei∵b⩾ei∴piei∣ab,ab≡0(modpiei)同理,ab mod ϕ(c)+ϕ(c)=(npi)b mod ϕ(c)+ϕ(c)=nb mod ϕ(c)+ϕ(c)×pib mod ϕ(c)+ϕ(c)−ei×piei∴piei∣ab mod ϕ(c)+ϕ(c),ab mod ϕ(c)+ϕ(c)≡0(modpiei)∴ab≡ab mod ϕ(c)+ϕ(c)≡0(modpiei)\because p_i为质数,\text{gcd}(a,p_i^{e_i})\\ \therefore p_i \mid a\\ \therefore 设a=np_i\\ \because b\geqslant \phi(c),\phi(p_i^{e_i})\geqslant e_i,欧拉函数是积性函数\\ \therefore 有如下连等式 b \geqslant \phi(c) \geqslant \phi(p_i^{e_i}) \geqslant e_i\\ \because a=np_i\\ \therefore a^b = {(np_i)}^b = n^b \times p_i^{b-e_i}\times p_i^{e_i}\\ \because b\geqslant e_i\\ \therefore p_i^{e_i} \mid a^b,a^b \equiv 0 \pmod {p_i^{e_i}}\\ 同理,a^{b\bmod \phi(c)+\phi(c)}={(np_i)}^{b\bmod \phi(c)+\phi(c)}=n^{b\bmod \phi(c)+\phi(c)}\times p_i^{b\bmod \phi(c)+\phi(c)-e_i}\times p_i^{e_i}\\ \therefore p_i^{e_i} \mid a^{b\bmod \phi(c) +\phi(c)},a^{b \bmod \phi(c)+\phi(c)}\equiv 0 \pmod {p_i^{e_i}}\\ \therefore a^b \equiv a^{b\bmod \phi(c)+\phi(c)} \equiv 0 \pmod {p_i^{e_i}}
意义

不需要考虑a,ca,c互不互质了。

在我们只会欧拉定理时,当a,ca,c不互质时,使用的方法是拆模数。

现在会了扩展欧拉定理,就多了一种方法,但不代表前一种方法没用了,因为扩展欧拉定理降幂的模数很难达到最优

小结

第12题没什么好讲的(远没有扩展欧拉定理难证),就留作课后作业了


如有错误欢迎指出,转载请标明出处@renhongxuuu

2025/7/22 21:58
加载中...