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

浅谈数论

前言

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

符号

  1. xx\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 也写成amodb=ca \bmod b = ccca+kba+kb的最小正值

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

    性质:

    • (a+b)modc=((amodc)+(bmodc))modc(a + b)\bmod c = ((a \bmod c) + (b \bmod c))\bmod c

    • (a×b)modc=((amodc)×(bmodc))modc(a \times b)\bmod c = ((a \bmod c) \times (b \bmod c))\bmod c

    • abmodc=(amodc)bmodca^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+byx,yZ}中最小的正整数\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(logmin(a,b))O(\log min(a,b))

    性质3的证明:

    r=x%y,k=xryr=xky,x=r+ky一方面:设dx,y的公约数,x=ld,y=mdr=xky=ldkmd=(lkm)ddmd,(lkm)d的公约数dy,r的公约数另一方面:设qy,r的公约数,y=oq,r=pqx=r+ky=pq+koq=(p+ko)qq(p+ko)q,oq的公约数qx,y的公约数(dx,y的公约数)(dy,r的公约数)的充分必要条件x,y的公约数集合A{d(dgcd(x,y))}等价于y,r的公约数集合B{q(qgcd(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. aba \mid b 读作a整除ba整除b 即**ab的因数a是b的因数**

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

    性质:

    1. ab,cba,c互质,acba \mid b ,c \mid b且a,c互质,则 ac \mid b

    2. z若ab,acx,y a(bx+cy)a \mid b,a \mid c \Longleftrightarrow \forall x,y \ a\mid (bx+cy)

      证明:

      ab,acagcd(b,c)akgcd(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. ab(modc)  a\equiv b \pmod c \;a,bc同余a,b模c同余,即a%c=b%ca\% c = b \% c

    意义:

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

    举例:

    求:(999999)999mod1000(1)999(mod1000)(999999)999mod1000[(1)(1)](1)mod1000=(1)mod1000=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%mb%m)%m=(ab)%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
    • ab(modc)c(ab)a\equiv b \pmod c \Longleftrightarrow c \mid (a-b)

    如果你只知道a%m,b%ma\%m,b\%m的值可以进行则运算推出(a+b)%m,(ab)%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. 999999999mod1000999^{999^{999}} \bmod 1000
  2. 出以下方程未知数的通解或说明其无解
    1. 3x1(mod9)3x \equiv 1 \pmod {9}

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

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

扩展欧几里得定理

明确定义

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

转化

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

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

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

通解公式

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

x1,y1是方程ax+cy=b的一组解ax1+cy1=bax1+ackack+cy1=ba(x1+c×k)+c(y1a×k)=b该方程的所有解为{x=x1+c×ky=y1a×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 可以变形为ax+cy=ba^\prime x+c^\prime y=b^\prime

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

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

ax+cyZ\therefore a^\prime x+c^\prime y\in \mathbb{Z}

bZ,ax+cyZ,与上文矛盾。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

接下来只需要求解方程ax+cy=ba^\prime x+c^\prime y= b^\prime

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

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

    解:

    该方程等价于3x+9y=1提取a,b的最大公约数3,方程变为3(x+3y)=131该方程无解该方程等价于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=1x,X,y,Yx,X,y,Y的关系

将方程二两边乘以cc,变为 a(Xc)+b(Yc)=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)=1aX+bY=gcd(a,b)我们不妨多列几个形如这样的方程,然后令下一层的a等于上一层的b,下一层的a等于上一层的a取模上一层的b一直列下去,总有一层的b会等于0,求解出最后一层的X,Y,再寻找现相邻两层X,Y的关系即可(注:我这里会用下标表示层数)举例:133X+403Y=1403X1+133Y1=1133X2+4Y2=14X3+Y3=1X3+0Y3=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 接下来我们研究XnXn+1YnYn+1的关系对于Xn,Yn,aXn+bYn=1对于Xn+1,Yn+1,有bXn+1+(a%b)Yn+1=1aXn+bYn=bXn+1+(a%b)Yn+1因为a,b大于0,所以根据余数的性质,原式变为aXn+bYn=bXn+1+(aab×b)Yn+1aXn+bYn=bXn+1+aYn+1ab×bYn+1aXn+bYn=aYn+1+b(Xn+1ab×Yn+1)Xn=Yn+1,Yn=Xn+1Yn+1ab我们求解出最后一层的X,Y,然后拿这个公式反推出上一层的X,Y,一直推到第一层,就完事了!举例:266x4(mod806)266x+806y=4133x+403y=2133X+403Y=1403Y1+133Y1=1133X2+4Y2=14X3+Y3=1X4+0Y4=1X4=1,Y4=0X3=Y4=0,Y3=X4Y4×41=10×4=1X2=1,Y2=33X1=33,Y1=100X=100,Y=33{x=X×2=200+403ky=Y×2=66133k接下来我们研究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}

小结

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

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

    根据题意,可以列出方程:123x41(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=9431000kx1000x=(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最小是多少?

    根据题意,可以列出方程:201x67(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=26801000kx1000x=(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的操作。

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

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

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

求解

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

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

逆元的作用、意义

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

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

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

不妨列出方程3x1(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,BBA但是不知道他们的值,只知道他们模m的值a=A%m,b=B%m(AB)%m的值?当gcd(b,m)=1因为AB,所以AB为正整数,令C=AB,C为正整数A=BCabC(modm)()gcd(b,m)=1b1在模m下存在将①两边乘b1ab1b×b1×C(modm)ab1C(modm)(AB)modm=a×b1modm所以,我们证明了当gcd(b,m)=1时,(AB)%m=a×b1modm于是,我们得到了(AB)%m的通解:ab1+km,因为(AB)%m<m,所以这个答案变成唯一解ab1还没完,当gcd(b,m)1d=gcd(b,m)a=Amodm,b=BmodmA=a+xm,B=b+ym根据gcd的性质,因为b=Bmodm,所以gcd(B,m)=gcd(b,m)=d,又因为AB,gcd(A,m)=da=ad,b=bd,m=mdABmodm=a+xmb+ymmodm=d×(a+x×m)d×(b+y×m)=a+x×mb+y×mA=a+x×m,B=b+y×m问题转换为ABmodm,并且此时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=5gcd(b,m)=1mb1=4ABmodm=a×b1modm=3×4mod5=2解释:2=84mod5a=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=6gcd(b,m)1a=2,b=4,m=6a=1,b=2,m=3mb1=2ABmodm=a×b1modm=1×2mod3=2,5解释:2=84mod6,5=204mod6a=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

线性求逆元

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

不妨考虑以下算法:

对于1n1的一个数i,r=nmodi,p用余数表示法表示为n=ni×i+r于是:ni×i+r0(modn)ni×i×(i1×r1)+r×(i1×r1)0(modn)ni×r1+i10(modn)i1ni×r1(modn)111(modp)i1={i=11i1(ni×r1)modnr=nmodir<i只需要从1n1顺序遍历一遍,当遍历到i时,r一定算出来了,所以可以O(1)求出模n下的i1该算法的时间复杂度为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);

阶乘求逆元

0n0到n阶乘模p的逆元

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

(n1)1n1×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;

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

定义

对于形如{xa1(modm1)xa2(modm2)xan(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(mn1,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_ijij\neq i时,kMi0(modmj)kM_i\equiv 0 \pmod {m_j},接下来令kMiai(modmi)kM_i\equiv a_i \pmod {m_i},就可以达到kMikM_i对于第ii条是正确的,并且对于不是第ii条的方程不影响。我们不妨将1n1至n的所有kMikM_i求解并求和,就可以得到一个解,再将其取模MM,就是答案的最小正值。

举例:

{x2(mod3)x3(mod5)x2(mod7)35k2(mod3)解得k=121k3(mod5)解得k=315k2(mod7)解得k=2x1=35×1+21×3+15×2=128x=128mod(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两两互质,所以不用担心kMiai(modmi)kM_i\equiv a_i \pmod {m_i}这些方程无解

小结

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

解:不妨设中间数为x假如x能被某些213的质数整除:p1,p2pn那么对于1in,pi(x±k×pi)我们只需关注x±10之内的数,也就是说x不必整除11,13那便假设2×3×5×7x则:数字:x10x9x8x7x6x5x4x3x2x1xx+1x+2x+3x+4x+5x+6x+7x+8x+9x+10能整除的质数:2,53272,35232?2,3,5,7?23252,37232,5我们这样做的好处是现在只有x1,x+1没有整除一个素数,怎么办呢?显然,2,3,5,7x1,x+1,那就让11,13分别整除x1,x+1情况一:11x1,13x+12×3×5×7x,(x1)11,(x+1)13x10(mod11),x+10(mod13)可以列出方程组:{x1(mod11)x12(mod13)x0(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):欧拉函数,即1x1\sim xxx互质的数的个数

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

性质

  1. ϕ(1)=1\phi(1)=1
  2. ϕ(p)=p1\phi(p)=p-1(p为质数)
  3. ϕ(pb)=pbpb1\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(11pi)\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)1pb中与pb互质的数的个数ϕ(pb)=pb(1pb中与pb不互质的数的个数)那么1pb中与pb不互质的数到底有多少呢?因为p为质数,所以不互质pb的数一定是p的倍数:1p,2p,3p,pb1×p,一共有pb1ϕ(pb)=pbpb1回归定义,\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)=1ab\phi(a\times b)=1 到 ab中与abab互质的数的个数
我们列出1ab1 \sim ab的所有整数:

原数原数模aa的结果原数模bb的结果
11moda1 \bmod a1modb1 \bmod b
22moda2 \bmod a2modb2 \bmod b
abab0000

将右两列组成数对:(xmoda,xmodb)(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(xmoda,a)=1 且 gcd(xmodb,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同时满足以下两个条件时,xxabab互质:

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

因为aabb互质,所有数对(xmoda,xmodb)(x \bmod a, x \bmod b)互不相同(即不同xx对应不同数对),因此原数xx与数对(u,v)(u,v)一一对应

观察数对中的分量:

  • aa的余数取值范围是0(a1)0 \sim (a-1),其中与aa互质的数有ϕ(a)\phi(a)
  • bb的余数取值范围是0(b1)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(piaipiai1)=Πi=1npiai(11pi)=Πi=1npiai×Πi=1n(11pi)=xΠi=1n(11pi)证毕举例:计算ϕ(1000)1000=23×53ϕ(1000)=1000×(112)×(115)=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
欧拉定理的证明
假设ax互质,且0a<x。考虑1x中与x互质的所有整数,记为b1,b2,,bϕ(x)。定义ci=bi×adi=cimodx序列b满足:{ij, bibj,gcd(bi,x)=1.分析di的性质:问题:di=dj是否可能成立(对于ij)?反证法:假设di=dj(其中ij)。cicj(modx),即(bi×abj×a(modx))由同余性质,得a(bibj)0(modx)由于gcd(a,x)=1,因此bibj0(modx)又因1bi,bjx,故bi=bj,与条件ij矛盾。因此,didj,即d满足互异性。互质性:gcd(di,x)=gcd(cimodx,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满足互质性。综上,序列db除了顺序可能不同,其他均相同。示例:x=5,则与5互质的数为b=1,2,3,4(即ϕ(5)=4)。a=3,有ci=bi×3=[3,6,9,12]计算di=cimod5=[3,1,4,2],与b相同但顺序不同。欧拉定理的推导:由于db的重新排列,其乘积满足:b1b2bϕ(x)d1d2dϕ(x)(modx).又因diabi(modx),故:d1d2dϕ(x)(ab1)(ab2)[abϕ(x)](modx).因此,b1b2bϕ(x)aϕ(x)[b1b2bϕ(x)](modx).整理得:[aϕ(x)1]b1b2bϕ(x)0(modx).由于每个bix互质,其乘积b1b2bϕ(x)也与x互质(因数均互质)。aϕ(x)10(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时,ababmodϕ(n)(modn)\text{gcd}(a,n)=1时,a^b\equiv a^{b \bmod \phi(n)} \pmod n

证明:

r=bmodϕ(n),k=brϕ(n)abakϕ(x)+r[aϕ(x)]k×ar1k×ararabmodϕ(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. 计算7105mod107^{105} \bmod 10

    gcd(7,100)=17ϕ(10)741mod1071057100+1(74)26×717(mod10)答:7我们发现欧拉定理的有降幂的作用,也就是欧拉定理的推论:gcd(a,n)=1时,ababmodϕ(n)(modn)你可能会问,若gcd(a,n)=1时能不能降幂呢?后文会讲到「扩展欧拉定理」再补充一句,bmodϕ(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)首先,10321032321032(mod100)x321032(mod100),:x0(mod4)x321032modϕ(25)3212712496(1)61(mod25)有方程组:{x0(mod4)x1(mod25)根据中国剩余定理,解得x76(mod100)1032103276(mod100)通过这个例题,我们学会了当底数与模数不互质时,可以用中国剩余定理求解,这就是为什么要把这一章放在中国剩余定理之后的原因。更具体的,x=abmodm,将模数m质因数分解p1e1×p2e2×pnen,先用欧拉定理求解abx(modp1e1),再用中国剩余定理把互质的模数拼起来,就能求解出答案了(因为当ij时,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)=1n为正整数时f(n)=nf(n1)\begin{cases}f(1)=1 \\当n为正整数时\quad f(n)=n^{f(n-1)} \end{cases},求f(2008)f(2008)的最后3位。

    200820072006mod1000(注:这是2008(2007(2006))mod1000的简化记法)因为gcd(2008,1000)1先求出200820072006mod8200820072006mod125,再用中国剩余定理拼起来。x=200820072006mod1000200820072006(2×1004)20072006220072006×1004200720060(mod8)...[1]2008200720062008[20072006modϕ(125)]2008[20072006mod100]2008[72006mod100](mod125)接下来求出720062005mod100即可gcd(7,100)=1接下来观察7的幂次最后两位的规律:701(mod100)717(mod100)7249(mod100)7343(mod100)计算200620052004mod4显然,它=0720062005mod100=1x2008[72006mod100]200818(mod125)...[2]{x0(mod8)x8(mod125)解得x8(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. 求证当 n3n \geqslant 3 时,nnnnn(mod16)n^{n^n} \equiv n^n \pmod{16}

    证明: 分两种情况讨论:

    1. nn为偶数

      n32nn4n2,nn2 n(nn)nn0(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为奇数时,n41(mod16)n=2k+1(2k+1)4=16k4+32k3+24k2+8k+1n416k4+32k3+24k2+8k+18k2+8k+116×(k+1)×k2+11(mod16)(因为(k+1)k2=Ck+12是整数)2n,n41(mod16)n(nn)nn(mod16)nnn(mod4)n1(mod2)10(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\\ 证毕

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

  5. 求证当 n3n \geq 3 时,1989nnnnnnn1989 \mid n^{n^{n^n}} - n^{n^n}

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

    1. 99
      • 3n3 \mid n,则 nnn^nnnnn^{n^n} 均被 99 整除(∵ n3n \geq 3)。
      • 3n3 \nmid n,则需 nnnnn(mod6)n^n \equiv n^{n^n} \pmod{6}。 ∵ 模 22 和模 33 均同余(奇偶性一致且 n±1(mod3)n \equiv \pm 1 \pmod{3}), ∴ 成立。
    2. 1313
      • 13n13 \mid n,则两边模 131300
      • 13n13 \nmid n,则需 nnnnn(mod12)n^n \equiv n^{n^n} \pmod{12}。 ∵ 模 44(偶数整除/奇数同余)和模 33 均同余, ∴ 成立。
    3. 1717
      • 17n17 \mid n,则两边模 171700
      • 17n17 \nmid n,则需 nnnnn(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)11(modn)\therefore a\times a^{\phi(n)-1}\equiv 1 \pmod n

aϕ(n)1+k×n\therefore a^{\phi(n)-1}+k\times naann的逆元

费马小定理

nn为质数且nan \nmid a时,an11(modn)a^{n-1}\equiv 1 \pmod n

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

na,n是质数gcd(a,n)=1根据欧拉定理,aϕ(n)1(modn)n为质数ϕ(n)=n1an11(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为质数时,

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

a×an21(modn)\therefore a\times a^{n-2} \equiv 1 \pmod n

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

扩展欧拉定理

定理

a,b,cN+,满足ab{abb<ϕ(c)abmodϕ(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

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

定理的证明

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

  • 先证明两个引理:

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

      根据同余的性质,有(xy)=k1p,(xy)=k2q其中k1,k2都是整数(xy)p的倍数,也是q的倍数(xy)至少是pq的最小公倍数的倍数lcm(p,q)(xy)p,q互质pq(xy)xy(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即证2e1e注意到,当e=1时显然成立假设不等式在k处成立,需证它在(k+1)处也成立(k大于等于1)2k1k2k2kk12kk+12k2kk+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=p1e1p2e2pkekc=p_1^{e_1}p_2^{e_2}\cdots p_k^{e_k}

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

​ 根据引理1,只需证明对于每个pieip_i^{e_i},满足ababmodϕ(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)×k1(modpiei)根据余数表示法,有b=bϕ(c)×ϕ(c)+bmodϕ(c)ababϕ(c)×ϕ(c)+bmodϕ(c)abϕ(c)ϕ(c)×abmodϕ(c)1×abmodϕ(c)abmodϕ(c)×aϕ(c)abmodϕ(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)piaa=npibϕ(c),ϕ(piei)ei,欧拉函数是积性函数有如下连等式bϕ(c)ϕ(piei)eia=npiab=(npi)b=nb×pibei×pieibeipieiab,ab0(modpiei)同理,abmodϕ(c)+ϕ(c)=(npi)bmodϕ(c)+ϕ(c)=nbmodϕ(c)+ϕ(c)×pibmodϕ(c)+ϕ(c)ei×pieipieiabmodϕ(c)+ϕ(c),abmodϕ(c)+ϕ(c)0(modpiei)ababmodϕ(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
加载中...