说明

  1. 人民教育出版社 A版: 数学选修 4-6 初等数论初步
  2. 人民教育出版社 B版: 数学选修 4-6 初等数论初步
  3. 离散数学(第2版) 初等数论部分
  4. 基础数论典型题解300例
  5. 初等数论第四版第4版闵嗣鹤严士健
  6. 数论入门-从故事到理论

第一讲 整数的整除

整除的定义

a,bZa,b \in \mathbb{Z},若存在整数k0k \neq 0使得a=bka=bk,则称bbaa因子,记作bab \mid a,否则记做bab \nmid a

性质

  1. 互为因子则相等: (abba)(a=ba=b)(a \mid b \land b \mid a) \to (a = b \lor a = -b).
  2. 传递性: (abbc)ac(a \mid b \land b \mid c) \to a \mid c
  3. abaca(bx+cy),x,yZa \mid b \land a \mid c \to a \mid (bx + cy) , x,y \in \mathbb{Z}
  4. 消去律: akxkaxak \mid xk \to a \mid x

证明

(1): abk10:a=bk1a \mid b \to \exists k_1 \neq 0: a = b k_1. 同理 bak20:b=ak2b \mid a \to \exists k_2 \neq 0: b = a k_2. 得到bk1k2=bk1k2=1k1=k2=±1b \cdot k_1 \cdot k_2 = b \to k_1 \cdot k_2 = 1 \to k_1 = k_2 = \pm 1.于是a=ba=ba = b \lor a = -b

(2): 根据前件得到:ak1=b,bk2=cak1k2=ca \cdot k_1 = b, b \cdot k_2 = c \to a \cdot k_1 \cdot k_2 = c. 于是aca \mid c

(3): 是这里最难证明的.

显然 abakba \mid b \to a \mid k \cdot b.再证明abaca(b+c)a \mid b \land a \mid c \to a \mid (b+c).

abac(ak1=bak2=c)a(k1+k2)=b+ca(b+c) \begin{aligned} a \mid b \land a \mid c & \to (a \cdot k_1 = b \land a \cdot k_2 = c) \\ & \to a \cdot (k_1 + k_2) = b + c \\ & \to a \mid (b+c) \\ \end{aligned}

又因为abx,acya \mid bx , a \mid cy 成立,所以a(bx+cy)a \mid (bx + cy)成立.

(4). akxkakk1=xkak1=xaxak \mid xk \to a \cdot k \cdot k_1 = x \cdot k \to a \cdot k_1 = x \to a \mid x

1.2 带余除法

带余除法

对于任意一对整数a,ba,b,其中b0b \neq 0,**存在唯一一对整数q,rq,r,使得

a=bq+r,0r<b a = bq + r, \quad 0 \leq r < |b|

这里没有证明.这里可以通过枚举法感性的理解它的正确性.

3. 素数判定

法1:判断单个数字是否为素数,时间为n\sqrt n

bool isPrime(int a) {
    for(int i = 2;i *i <= a;i++) {
        if( a % i == 0) return 0;
    }
    return 1;
}

如果从快速得到[1,n][1,n]之间的所有的素数呢?,如果对每一个数调用isPrime(i)isPrime(i),那时间为n×nn \times \sqrt n.

还有一种更快的方法,叫做埃氏筛法.o

它的基本思想如下:

  • 删除[1,n][1,n]之间的所有的合数.
  • [1,n][1,n]之间的所有的素数一定不会被删除.

证明这个算法的正确性,集合不漏与数学归纳法.

对某个合数a2a \geqslant 2,它一定可以被不超过a\sqrt a的素数整除.那么合数aa被删除一定要保证[2,a][2,\sqrt a]之间的素数不被删除. 观察算法,发现只有一个数是两个数的乘积时才会被删除,显然素数都不会被删除.所以合数a一定被删除(不漏),所以算法的正确性是显然的.

#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5+5;
bool del[maxn]; // 0 表示没有删除
vector<int> prime;

//埃式筛法
/* 原理: 
 *  - 2是最小的的素数,2的k倍都不是素数,k>=2
 *  - 下一个没有被筛掉的数是3,所以3是素数(原理:合数一定可以拆出一个小于自己的素数因子)
 *      - 删除3的k>=3倍数
 *  - 4 被删除,不用岀它的倍数
 *  - ....
 * */
void E_prime(int n){
    //memset(del,0,sizeof(del));
    for(int i=2;i<=n;i++){
        if( del[i] == 0){
            prime.push_back(i);
            if( i > n / i ) continue; //防溢出
            // 为什么从i*i开始删除?
            // 这是一个优化: 对于小于i的倍数来说,都已经尝试过!!
            for(int j=i*i;j<=n;j+=i) del[j] = 1;
        }
    }
}

int main(){
    E_prime(100); // 求100内的素数
    for (const auto& e : prime) {
        cout << e << " ";
    }
    cout << endl;
    return 0;
}

因为有重复的删除,所以时间复杂度为O(nloglogn)O(n \log \log n),比枚举法要快.

二 最大公因数与最小公倍数

定义:

  1. 公因数: abaca \mid b \land a \mid c,a是b,cb,c的公因数.
  2. 最大公因数: gcd(b,c)=max(A),A={aabac}gcd(b,c) = max(A),A =\{a | a \mid b \land a \mid c\}
  3. 互素: gcd(a,b)=1gcd(a,b) = 1

我们早就就过gcdgcd,也就是辗转相除法.代码很简单,如下

int gcd(int a,int b)
{
    if(b == 0) return a;
    return gcd(b,a%b);
}

当然也可以使用c++内置的__gcd()函数.

证明:

  1. 显然00与任意数xx的最公因数都是xx本身: gcd(0,x)=xgcd(0,x) = x.

a,b,r1a,b,r_1,其中r1=amodbr_1 = a \mod b. 也就是可以写成带余除法的形式: a=bq+r1a = bq + r_1

(a,b)(a,b)表示a,ba,b公因数形成的集合

现在我们只要证明(a,b)=(b,r1)(a,b) = (b,r_1),就能证明gcd(a,b)=gcd(b,r1)gcd(a,b) = gcd(b,r_1)

证明:x(a,b)x(b,r1)x \in (a,b) \to x \in (b,r_1),那么根据前提得到xa,xbx \mid a,x\mid b,又得知r1=abqr_1 = a -bq,根据整数的整除性质3,得到xabqxr1x \mid a - bq \to x \mid r_1.得到(a,b)(b,r1)(a,b) \subset (b,r_1)

证明:x(b,r1)x(a,b)x \in (b,r_1) \to x \in (a,b),同理: xb,xr1x \mid b ,x \mid r_1,同样根据性质3得到xa=bq+r1x \mid a = bq + r_1,得到(b,r1)(a,b)(b,r_1) \subset (a,b)

所以(a,b)=(b,r1)(a,b) = (b,r_1),得证. 你可以写一个暴力的代码验证二者的集合是不是一样.

重要性质

gcd(a,b)=ax+by gcd(a,b) = ax + by

一定成立

a,b的最大公因数可以通过最a,b各乘以一个整数后相加凑出来

证明: 辗转相除法加上数学归纳法.这个算法叫做exgcdexgcd算法.

abcgcd(a,b)=1ac a \mid bc \land gcd(a,b) = 1 \to a \mid c

证明见书P11

设p是素数,若pabp \mid ab,则 papbp \mid a \lor p \mid b

通过代码我们发现,lcm(a,b)×gcd(a,b)=a×blcm(a,b) \times gcd(a,b) = | a \times b |

gcd_lcm.py

如果证明这个结论的正确性呢? 先使用缩小法(特例法),把问题变得简单,当a,b互质时,gcd(a,b)=1gcd(a,b) = 1, 那么lcm(a,b)=a×blcm(a,b) = a \times b. 先证明这个公式的正确性.

证明:

先把lcm(a,b)=a×blcm(a,b) = a \times b 转成我们容易理解的样子ax=bya \cdot x = b \cdot y,其中x,yx,y是整数. x=byax = \frac{b \cdot y}{a},根据已知条件a,b,x,ya,b,x,y是整数,a,b互质,所以bya\frac{b \cdot y}{a}是整数.但b÷ab \div a不是整数,那么必然y÷ay \div a是整数,所以aya \mid y,同理bxb \mid x, 得到y=k1a,x=k2by = k_1 a, x = k_2 b,代入得到ak2b=bk1ak1=k2a k_2 b = b k_1 a \to k_1 = k_2,显然k1=k2=1k_1 = k_2 = 1,得到最小的倍数,证明结束.

证明2: 再来证明gcd(a,b)1gcd(a,b) \neq 1

gcd(a,b)×x=a,gcd(a,b)×y=bgcd(a,b) \times x = a , gcd(a,b) \times y = b,使用反证法可以得到gcd(x,y)=1gcd(x,y) = 1,也就是x,yx,y互质.

同样设lcm(a,b)=a×k1=b×k2lcm(a,b) = a \times k_1 = b \times k_2,其中k1,k2k_1,k_2是整数.

综上得到 gcd(a,b)×x×k1=gcd(a,b)×y×k2x×k1=y×k2gcd(a,b) \times x \times k_1 = gcd(a,b) \times y \times k_2 \to x \times k_1 = y \times k_2, 已经知道x,yx,y互质.根据上面已经证明的部分,得到k1=y,k2=xk_1 = y ,k_2 =x 这个时候才能使用lcm(a,b)lcm(a,b)最小

所以gcd(a,b)×lcm(a,b)=gcd(a,b)×a×y=gcd(a,b)×b×x=a×bgcd(a,b) \times lcm(a,b) = gcd(a,b) \times a \times y = gcd(a,b) \times b \times x = a \times b.证明完毕.

其时这个证明起始思想来源于 算术基本定理,通过观察lcm(a,b)×gcd(a,b)lcm(a,b) \times gcd(a,b) 各自怎么拆分得到a×ba \times b的形式,再加上任意问题都是由简单问题组成的观点递归分解证明2,我们得到了这个结论.

又同样说明了: 当我们需要证明一个结论时,先要观察数据,这个步骤在<<怎样解题>>这本书叫做熟悉题目,深入理解题目,寻求有用的思路,探索法

三 算术基本定理

任何大于1的整数都可以唯一分解成素因数乘积的形式

n=p1a1×p2a2××pkak n = p_1 ^ {a_1} \times p_2 ^ {a_2} \times \cdots \times p_k ^ {a_k}

证明: 1. 存在性 2. 唯一性

存在性: 若一个数字n,不是素数,可以分解成a×ba \times b ,其中a是一个素数,b可以继续分解.

唯一性: 见书上P13. 先假设存在.然后根据素数不可能分解的性质.证明p1=q1p_1 = q_1.然后递归.

第二讲 同余与同余方程

  1. 利用同余关系进一步讨论了整除
  2. 剩余类. 对同一个剩余类的数引入 加法,乘法.

一 同余

引入的同余的概念:

ab(modn) a \equiv b \pmod{n}
ab(modn)nab(a) a \equiv b \pmod{n} \Leftrightarrow n \mid a - b \tag a

感性的理解: 长度为a,b的木棍对于n都有相同的余数.也就多出来的长度一样.相减后,去除了那个多的部分.

证明: 写成带余除法a=nq+r,b=nq+ra = nq+r,b = n'q'+r'

必要性: 根据前提显然r=rr = r',ab=n(qq)naba - b = n(q-q') \to n \mid a - b.

充分性: nabnn(qq)+rrnrrn\mid a-b \to n \mid n(q-q')+r - r' \to n \mid r - r',根据带余除法的定义,得到n<rr<nrr=0r=r-n < r - r' < n \to r - r' = 0 \to r = r',得证: ab(modn)a \equiv b \pmod{n}.

补充:

  1. 和的模等于模的和 (a+b)(a(modn)+b(modn))(modn)(a + b) \equiv (a \pmod{n} + b \pmod{n}) \pmod{n}
  2. 积的模等于模的积 (ab)(a(modn)b(modn))(modn)(ab) \equiv (a \pmod{n}b \pmod{n}) \pmod{n}

性质:

  1. 反身性,自反性
  2. 交换律,对称性
  3. 传递性

ab(modn),cd(modn)a \equiv b \pmod{n},c \equiv d \pmod{n},

  1. a+cb+d(modn)a+c \equiv b+d \pmod{n} 可加性
  2. acbd(modn)ac \equiv bd \pmod{n} 可乘性
  3. kakb(modn)ka \equiv kb \pmod{n} 可乘性推论
  4. akbk(modn)a^k \equiv b^k \pmod{n} 可乘性推论

证明1: 必要性

ab(modn),cd(modn)nab,ncdk1n=ab,k2n=cd(k1+k2)n=(a+c)(b+d)n(a+c)(b+d)a+cb+d(modn) \begin{aligned} a \equiv b \pmod{n},c \equiv d \pmod{n} &\to n \mid a -b ,n \mid c-d \\ & \to k_1 n = a -b , k_ 2 n = c-d \\ & \to (k_1 + k_2) n = (a+c) - (b+d) \\ &\to n \mid (a+c) - (b+d) \\ &\to a+c \equiv b+d \pmod{n} \end{aligned}

充分性只要反过来

证明2: 必要性

ab(modn),cd(modn)nab,ncdk1n=ab,k2n=cdck1n=acbc,bk2n=bcbd(ck1+bk2)n=acbdacbd(modn) \begin{aligned} a \equiv b \pmod{n},c \equiv d \pmod{n} &\to n \mid a -b ,n \mid c-d \\ & \to k_1 n = a -b , k_ 2 n = c-d \\ & \to c k_1 n = ac - bc , b k_ 2 n = bc-bd \\ & \to (ck_1 + bk_2) n = ac - bd \\ & \to ac \equiv bd \pmod{n} \end{aligned}

消费律: acbc(modn)gcd(c,n)=1ab(modn)ac \equiv bc \pmod{n} \land gcd(c,n) = 1 \to a \equiv b \pmod{n}

证明: 根据同余与整除的等价关系,得到

acbc(modn)nc(ba)c(ba)nZnba因为gcd(c,n)=1ab(modn) \begin{aligned} ac \equiv bc \pmod{n} & \Leftrightarrow n \mid c(b-a) \\ & \to \frac{c(b-a)}{n} \in \mathbb{Z} \\ & \to n \mid b-a \quad \text{因为} gcd(c,n) = 1 \\ & \to a \equiv b \pmod{n} \end{aligned}

消费律是充分必要的.

消去律其实是下面公式的特例,这个公式出现在B版的P24.

acbc(modn)ab(modngcd(c,n)) ac \equiv bc \pmod{n} \Leftrightarrow a \equiv b \pmod{ \frac{n}{gcd(c,n)}}

证明与上面其实是一样的.

这里只证明必要性:

c=k1(c,n),n=k2(c,n)c = k_1 \cdot (c,n),n = k_2 \cdot (c,n),那么k2=n(c,n)k_2 = \frac{n}{(c,n)}.

acbc(modn)nc(ba)c(ba)nZk1(c,n)(ba)k2(c,n)Zk1(ba)k2Z因为(k1,k2)=1,就变得和上面一样了k2baab(modk2=n(c,n))\begin{aligned} ac \equiv bc \pmod{n} &\Leftrightarrow n \mid c(b-a) \\ & \to \frac{c(b-a)}{n} \in \mathbb{Z} \\ & \to \frac{k_1 \cdot (c,n)\cdot (b-a)}{k_2 \cdot (c,n)} \in \mathbb{Z} \\ & \to \frac{k_1 \cdot (b-a)}{k_2} \in \mathbb{Z} \\ &\quad \text{因为} (k_1,k_2) = 1,\text{就变得和上面一样了} & \to k_2 \mid b-a \\ & \to a \equiv b \pmod{k_2 = \frac{n}{(c,n)}} \\ \end{aligned}

二 剩余类及其运算

  1. 剩余类定义
  2. 代表元
  3. 公式形式ab(modn)[a]=[b]a \equiv b \pmod{n} \Leftrightarrow [a] = [b]的解法
  4. 剩余类加法
  5. 剩余类乘法
  6. 零元
  7. 单位元
  8. 负元
  9. 逆元: 若[a][b]=[b][a]=[1][a][b] = [b][a] = [1] ,记作a1b(modn)a^{-1} \equiv b \pmod{n}

非零元[a][a]有逆元的充分必要条件: gcd(a,n)=1gcd(a,n) = 1,也就是说任何素数都有逆元.

三 费马小定理与欧拉定理

先发现,后证明.

发现当m为素数时,ama(modm)a^m \equiv a \pmod{m}.其中a<ma < m,根据消去律可知am11(modm)a^{m-1} \equiv 1 \pmod{m}

写一下代码求一下

## 能过暴力的方式求一下 a^m = a mod m

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True


while True:
    m = int(input("请输入一个素数m:"))
    if is_prime(m):
        break;
    else:
        print("输入的不是素数,请重新输入!")

for a in range(1, m):
    a_pow_m = a**m
    a_pow_m_mod_m = a_pow_m % m
    print(f"{a}^{m} = {a_pow_m} mod {m} = {a_pow_m_mod_m}")

费马小定理

pp是素数,则ap11(modp)a^{p-1} \equiv 1 \pmod{p}

也就是说ap2a^{p-2}的是aa的逆元.

证明:

a,2a,3a,,(m1)aa,2a,3a,\cdots ,(m-1)a对m取余数两两不等,反证法xaya(modm)xy(modm)xa \equiv ya \pmod {m} \to x \equiv y \pmod {m}显然不可能,所以这些数是mm完全剩余类

同样1,2,3,,m11,2,3,\cdots,m-1也是mm完全剩余类

所以

am1(m1)!(m1)!(modm) a^{m-1}(m-1)! \equiv (m-1)! \pmod {m}

又因为gcd((m1)!,m)=1gcd((m-1)!,m) = 1,根据消去律得到

am11(modm) a^{m-1} \equiv 1 \pmod {m}

欧拉定理

欧拉函数

ψ(n)\psi(n)表示1,2,,n11,2,\cdots,n-1中与n互质的个数,称为欧拉函数

  • 互素剩余类
  • 完全剩余系(集合)
  • 简化剩余系(集合)
gcd(m1,m2)=1ψ(m1m2)=ψ(m1)ψ(m2) gcd(m_1,m_2) = 1 \to \psi(m_1m_2) = \psi(m_1) \cdot \psi(m_2)

欧拉定理

m>1gcd(a,m)=1aψ(m)1(modm) m> 1 \land gcd(a,m) = 1 \to a^{\psi(m)} \equiv 1 \pmod{m}

证明方法与费马小定理本质是一样的.但这要先用到x1,x2,,xψ(m)x_1,x_2,\cdots,x_{\psi(m)}是模mm的一个简化剩余系,则kx1,kx2,,kxψ(m)kx_1,kx_2,\cdots,kx_{\psi(m)}也是模mm的一个简化剩余系(用到了抽屉原理).

四 一次同余方程

五 拉格朗日插值法和孙子定理

六 弃九验算法

第三讲 一次不定方程

第四讲 数论在密码中的应用

裴蜀定理

威尔逊定理

威尔逊定理

在初等数论中,威尔逊定理给出了判定一个自然数是否为质数的充分必要条件。即:当且仅当 p{\displaystyle p}为质数时:

(p1)! 1(modp) (p-1)! \quad \equiv \ -1 \pmod {p}

这里只证明充分性.

这里需要证明一个前置的定理: 当pp是素数,n1[1,p1]n_1 \in [1,p-1],必然存在唯一逆元n2[1,p1]n_2 \in [1,p-1],使得n1n21(modp)n_1n_2 \equiv 1 \pmod {p}

证明存在性:

n1n21(modp)pn1n21kp=n1n21kpn1n2=1kp+n1n2=1 \begin{aligned} n_1n_2 \equiv 1 \pmod {p} &\Leftrightarrow p \mid n_1n_2 - 1 \\ & \Leftrightarrow kp = n_1n_2 - 1 \\ & \Leftrightarrow kp - n_1n_2 = 1 \\ & \Leftrightarrow kp + n_1n_2 = 1 \\ \end{aligned}

根据裴蜀定理,因为gcd(n1,p)=1gcd(n1,p) = 1,必然存在,一对整数(k,n2)(k,n_2)使得kp+n1n2=1kp + n_1n_2 = 1成立

证明唯一性: 这里用到了群论逆元唯一性的证明:

设存在b,bab1(modp)ab1(modp)b,b' \to ab \equiv 1 \pmod {p} \land ab' \equiv 1 \pmod {p}

abab(modp)gcd(a,b)=1bb(modp) \begin{aligned} ab \equiv ab' \pmod {p} \xrightarrow{ gcd(a,b) = 1} b \equiv b' \pmod {p} \\ \end{aligned}

可能存在一个a[1,p1]a \in [1,p-1],它的逆元是自己本身.

a21(modp)pa21p(a1)(a+1)a[1,p1]a=1a=p1 \begin{aligned} & a^2 \equiv 1 \pmod p \\ & \Leftrightarrow p \mid a^2 - 1 \\ & \Leftrightarrow p \mid (a-1)(a+1) \\ & \xLeftrightarrow{a \in [1,p-1]} a = 1 \lor a = p-1 \end{aligned}

于是我们可以这样说: 在x[1,p1]x \in [1,p-1]中,除了1,p11,p-1外,[2,p2][2,p-2]这些数都存在一个对应的逆元,且两两配对.所以

i=2p2x1(modp)11(modp)i=1p2x1(modp)(p1)(p1)(modp)i=1p2xp1p1(modp)(p1)!1(modp) \begin{aligned} \prod_{i=2}^{p-2} x \equiv 1 \pmod {p} &\xrightarrow{ 1 \equiv 1 \pmod p} \prod_{i=1}^{p-2} x \equiv 1 \pmod {p} \\ &\xrightarrow{ (p-1) \equiv (p-1) \pmod p} \prod_{i=1}^{p-2} x \cdot p-1 \equiv p-1 \pmod {p} \\ &\rightarrow (p-1)! \quad \equiv -1 \pmod {p} \\ \end{aligned}

参考: https://zh.wikipedia.org/wiki/威尔逊定理

二元一次方程

有解的充要条件

ax+bx=c(1) ax + bx =c \tag 1

上式有解的充要条件是(a,b)c(a,b) | c

证明必要性:因为有解,设解为x0,y0x_0,y_0

k1(a,b)x0+k2(a,b)y0=c(a,b)(k1x0+k2y0)=c(a,b)c \begin{aligned} & k_1 (a,b) x_0 + k_2 (a,b) y_0 = c \\ & \to (a,b) (k_1 x_0 + k_2 y_0) = c \\ &\to (a,b) | c \end{aligned}

充分性:

根据裴蜀定理,必然存在一给整数x0,y0x_0,y_0,使得

ax0+by0=(a,b) a x_0 + b y_0 = (a,b)

(a,b)k=ck=c(a,b)(a,b) \cdot k = c \to k = \frac{c}{(a,b)},则上式两边同时乘以kk得到: kax0+kby0=ck a x_0 + k b y_0 = c \to

剩余系

完全剩余系

mm的每个剩余类中各取一个数组成的一个集合

简化剩余系

mm的互素类中各取一个数组成的一个集合

欧拉函数

证明欧拉函数需要先证明这几个定理

定理1: 剩余系集合相等

mzm\in \mathbb{z},k,lk,l是固定的值,也是整数,且(k,m)=1(k,m) = 1

  1. 当x遍历模m的一个完全剩余系时,f(x)=kx+lf(x) = kx + l 也遍历模m的一个完全剩余系
  2. 当x遍历模m的一个简化剩余系时,f(x)=kxf(x) = kx 也遍历模m的一个简化剩余系

证明(1): 本质是证明两个集合A,BA,B相等,也就是证明两个集合里的元素完全一样.我想到了两种方法.

设集合A={x0,x1,,xm1}A = \{x_0,x_1 ,\cdots, x_{m-1} \},映射f(x)=(kx+l)modm,x inAf(x) = (kx + l) \mod m, x\ in A,f(x)f(x)的像是集合BB

本质是证明f(x)f(x)是双射. 满射是显然的(注意这里,可以想到集合B的元素是mod来的,所以B一定是A的子集),下面只证明单射就可以了(两者的数量一样)

反证法,设xixjx_i \neq x_j

kxi+lkxj+l(modm)kxikxj(modm)xixj(modm)xi=xj \begin{aligned} & kx_i + l \equiv kx_j + l \pmod m \\ &\to kx_i \equiv kx_j \pmod m \\ &\to x_i \equiv x_j \pmod m \\ &\to x_i = x_j \end{aligned}

简单一点,可以先证明kximodmkx_i \mod m是完全剩余系,然后证明xi+lx_i + l本质是在一个圈上的移动,所以不会重复.

证明(2): 同理,证明f(x)f(x)是双射. 满射是显然的.下面只证明单射就可以了

设集合C={x1,x2,,xψ(m)(xi,m)=1}AC = \{x_1,x_2,\cdots,x_{\psi(m)} | (x_i,m) = 1\} \subset A,映射f(x)=kxmodm,xCf(x) = kx \mod m, x\in C,f(x)f(x)的像是集合DD

现在要证明集合C=DC= D,需要证明

  1. 数量一样,也就是单射,这里参考(1)的证明方法
  2. 我们知道DAD \subset A,这里只需要证明D满足C从A中选元素的条件即可,即(kxi,m)=1(kx_i,m) = 1,根据算术基本定理,我们知道(kxi,m)=(k,m)(xi,m)=1(kx_i,m) = (k,m)(x_i,m) = 1,所以D满足条件,所以DCD \subset C,所以C=DC = D

定理2:

(m1,m2)=1(m_1,m_2) = 1

  1. x1,x2x_1,x_2遍历模m1,m2m_1,m_2的完全剩余系时,m2x+m1ym2x+m_1y也遍历模m1m2m_1m_2的完全剩余系
  2. x1,x2x_1,x_2遍历模m1,m2m_1,m_2的简化剩余系时,m2x+m1ym2x+m_1y也遍历模m1m2m_1m_2的简化剩余系