费马小定理与欧拉定理

2020-08-04  本文已影响0人  dachengquan

定义
若整数a和整数b,除以正整数m得到的余数相等,称为a,b模m同余,记作a\equiv b \pmod m
费马小定理
若p为质数,a是任意整数并且gcd(a,p)=1,那么有a^{p-1}\equiv 1 \pmod p
欧拉定理
若正整数a,m互质,那么有a^{\varphi(m)} \equiv 1 \pmod m
欧拉定理推论
若正整数a,n互质,则对于任意的a^b \equiv a^{b \pmod {\varphi(n)}} \pmod n
当a,n不一定互质并且b>\varphi(n)的时候满足a^b \equiv a^{b \pmod {\varphi(n)}+\varphi(n)} \pmod n原因在于指数循环节,第\varphi(n)个往后一定会循环,这个公式也叫欧拉降幂公式。

费马小定理

若p为质数,a是任意整数并且gcd(a,p)=1,那么有a^{p-1}\equiv 1 \pmod p
分析:
因为p是质数,只有两种情况gcd(a,p)\neq 1
1.a=0,gcd(0,p) = p显然不成立
2.p|a,a是p的倍数,gcd(a,p)=p
思考一下这个公式3^6\equiv 1 \pmod{7}为什么成立

image.png
可以看出当x按顺序从1到6排列时,出现的数是1~6,但是顺序打乱了。通过这个现象可以发现下面的公式是成立的。



引理:若p为质数,a是任意整数并且,数列f:1,2,3,4...p-1。任意一个数都能在数列g:a mod p,2a mod p,... (p-1)a mod p中找到一个相同的数。
反证法:假设任意两个整数j和k,,满足。
通过上面公式可以推导出

因为gcd(a,p)=1所以根据j和k的范围可知,所以不可能成立,假设失败,数列g中不存在任意两个数相等。因为g一共有p-1个数,0到p-1一共有p个位置。因为gcd(a,p)=1不可能存在g数列出现0的情况。所以g数列中的数是1到p-1。
根据引理可知,这个公式是成立的。


欧拉定理

若正整数a,m互质,那么有a^{\varphi(m)} \equiv 1 \pmod m\varphi(m)是欧拉函数。欧拉定理证明费马小定理证明思路相同
引理:若正整数a,m互质,并且gcd(b_i,m)=1其中1\leq b_i<m,那么整数序列b_1,b_2,b_3...b_{\phi (m)}与整数数列ab_1 \pmod m,ab_2 \pmod m,ab_3 \pmod m...ab_{\phi (m)} \pmod{m},值相同但是次序不同。
反证法证明:任意正整数k,j \in b,j>k,使得ja\equiv ka \pmod{p}成立,相当于p|(j-k)只有当j==k时成立。因此就证明了第二个整数序列不可能存在两个相等的数。并且任意一个正整数z\in b gcd(z*a,p)=gcd(z,p)=1,每个数都与p互质,一共有\varphi (m)个数。1到p-1中与p互质的数只有\varphi (m)个数。所以就证明了这两个数列是值相等,但是次序不同。
根据引理可以得到\prod_{i=1}^{\varphi(m)}a*b_i = \prod_{i=1}^{\varphi(m)}b_i \pmod m
a^{\varphi(m)}*\prod_{i=1}^{\varphi(m)}b_i = \prod_{i=1}^{\varphi(m)}b_i \pmod m
a^{\varphi(m)} =1 \pmod m

欧拉定理推论

若正整数a,n互质,则对于任意的a^b \equiv a^{b \mod {\varphi(n)}} \pmod n
因为a^{\varphi(n)}\equiv 1 \pmod n很明显成立。
当正整数a,n不一定互质并且b>\varphi(n)的时候满足a^b \equiv a^{b \pmod {\varphi(n)}+\varphi(n)} \pmod n
假设上一次计算出的a^i \mod n = b,那么我们可以确定下一个的数是(b*a) \mod m
假设b无穷大,让i从1到b扫描,计算出a^i \mod n,这个数一定有在0到p-1之间。a^i有无数个,但是最后只有p个位置。所以有的位置一定会被重复占用。
通过上面的两个假设,可以确定a^i \mod n的值是不断循环的。如果我们能找出他是如何循环的。就可以让b变为一个更小的数去计算。
令一种解释是,i从1到n+1扫描,2^i\mod n最少有一对数是相等的。因为n+1个数对应0~n-1,n个位置最少有两个数占用了一个位置。假设这两个数的位置分别是j和k并且j>k,2^j \equiv 2^k \pmod n那么他们两个的下一个位置2^{j+1} \equiv 2^{k+1} \mod n,根据数学归纳法2^{j+i} \equiv 2^{k+i} \pmod n当j+i=k时是一个循环。循环长度len是j-k。因此当b非常大时,可以将b放到n到n+len-1,计算。
但是这个降幂公式根据确切表明,最少在第\varphi(n)+1个数进入循环,并且循环长度的倍数是\varphi(n)
欧拉降幂公式证明
当我们计算a^b \mod p。可以先求解\varphi (n),使用欧拉降幂公式缩小b,使用快速幂求解。O(\sqrt n log(n))的时间就可以计算出结果。

上一篇下一篇

猜你喜欢

热点阅读