费马小定理
历史
皮埃爾·德·費馬于1636年发现了这个定理。在一封1640年10月18日的信中他第一次使用了上面的书写方式。在他的信中费马还提出a是一个素数的要求。
1736年,歐拉出版了一本名為“一些與素數有關的定理的證明”(拉丁文:Theorematum Quorundam ad Numeros PRIMOS Spectantium Demonstratio)”[2]的論文集,其中第一次给出了證明。但從萊布尼茨未發表的手稿中發現他在1683年以前已經得到幾乎是相同的證明。
有些數學家獨立提出相關的假說(有時也被錯誤地稱為中國的假說),當成立時,p是質數。這是費馬小定理的一個特殊情況。然而,這一假說的前設是錯的:例如,,而341=11×31是一個偽素數。所有的偽素數都是此假說的反例。
证明
方法一
若n不能整除,,,則n也不能整除。取整數集为所有小於的集(构成的完全剩余系,即中不存在两个数同余),是中所有的元素乘以a组成的集合。因为中的任何两个元素之差都不能被p整除,所以B中的任何两个元素之差也不能被p整除。
換句話說,,考慮共個數,將它們分別除以p,餘數分別為,則集合{r1,r2,r3,...,rp-1}為集合{1,2,3,...,(p-1)}的重新排列,即1,2,3,....,(p-1)在餘數中恰好各出現一次;這是因為對於任兩個相異k*a而言(k=1,2,3....(p-1)),其差不是p的倍數(所以不會有相同餘數),且任一個k*a亦不為p的倍數(所以餘數不為0)。因此
即
在这里W=1·2·3·...·(p-1),且(W, p) = 1,因此将整个公式除以W即得到:
應用
- 計算除以13的餘數
故餘數為3。
- 證明對於任意整數a而言,恆為2730的倍數。
- 易由推得,其中為正整數。
- 故對指數13操作如下:13減1為12,12的正因數有1, 2, 3, 4, 6, 12,分別加1,為2, 3, 4, 5, 7, 13,其中2, 3, 5, 7, 13為質數,根據定理的延伸表達式,為2的倍數、為3的倍數、為5的倍數、為7的倍數、為13的倍數,即2*3*5*7*13=2730的倍數。
推广
欧拉定理
费马小定理是欧拉定理的一个特殊情况:如果 ,那么
这里 是欧拉函数。欧拉函数的值是所有小于或等于 的正整数中与 互質的数的个数。假如 是一个素数,则 ,即费马小定理。
证明 上面证明费马小定理的群论方法,可以同理地证明欧拉定理。考虑所有与 互素的数,这些数模 的余数所构成的集合,记为 ,并将群乘法定义为相乘后模 的同余。显然 是一个群,因为它对群乘法封闭(若 和 则 ),含幺元(即“1”),且任何一个元素 的逆元素也在集合中(因为若 则由群乘法封闭性任何 的幂次都在 中,所以 是 这个有限集的子集)。根据定义, 的阶是 ,于是根据拉格朗日定理, 中任何一个元素的阶必整除 。证毕。
卡邁克爾函數
卡邁克爾函數比欧拉函数更小。费马小定理也是它的特殊情况。
Python程式碼
>>> n =221
>>>a = 38
>>>pow(a ,n -1,n)
1
"""221 may be a prime number."""
import random
def isprime(n,k=128):
if n<2:
return False
for _ in range(k):
a = random.randrange(1,n)
if pow(a,n-1,n)!=1:
return False
return True
參考
- Fermat's Little Theorem.WolframMathWorld.(英文)
- A proof of certain theorems regarding prime numbers
- 許介彥. (PDF). 科學教育月刊 (私立大葉大學電機工程學系). 2006年10月, (第293期): 37–44. (原始内容 (PDF)存档于2015-04-18).
- 聂灵沼; 丁石孙. 第二版. 北京: 高等教育出版社. 2000: 第33页. ISBN 7-04-008893-2.
- 黄嘉威. . 数学学习与研究. 2015, (9): 第104页.