二、费马小定理
费马小定理是数论中的一个定理:假如a是一个整数,p是一个质数,那么
如果a不是p的倍数,这个定理也可以写成(同余式写法)
同余式
如果两个正整数 a和 b之差能被 n整除,那么我们就说 a和 b对模n同余,记作:
证明
任意取一个质数,比如13。考虑从1到12的一系列整数1,2,3,4,5,6,7,8,9,10,11,12,给这些数都乘上一个与13互质的数,比如3,得3,6,9,12,15,18,21,24,27,30,33,36。对于模13来说,这些数同余于3,6,9,12,2,5,8,11,1,4,7,10。这些余数实际上就是原来的1,2,3,4,5,6,7,8,9,10,11,12,只是顺序不同而已。
把1,2,3,…,12统统乘起来,乘积就是12的阶乘12!。把3,6,9,…,36也统统乘起来,并且提出公因子3,乘积就是312×12!。对于模13来说,这两个乘积都同余于1,2,3,…,12系列,尽管顺序不是一一对应,即312x12!≡12!mod 13。两边同时除以12!得312≡1 mod 13。如果用p代替13,用x代替3,就得到费马小定理xp-1≡1 mod p。应用
- 计算2^100除以13的余数
- 证明对于任意整数a而言
-
long long f(long a,long b,long n) //定义函数,求a的b次方对n取模{ int t,y; t=1; y=a; while(b!=0) { if((b&1)==1) t=t*y%n; y=y*y%n; b=b>>1; } return t;}
-