费马小定理

历史

皮埃尔·德·费马于1636年发现了这个定理。在一封1640年10月18日的信中他第一次使用了上面的书写方式。在他的信中费马还提出a是一个素数（质数）的要求。
1736年，欧拉出版了一本名为“一些与素数（质数）有关的定理的证明”（拉丁文：Theorematum Quorundam ad Numeros PRIMOS Spectantium Demonstratio）”的论文集，其中第一次给出了证明。但从莱布尼茨未发表的手稿中发现他在1683年以前已经得到几乎是相同的证明。

有些数学家独立提出相关的假说（有时也被错误地称为中国的假说），当成立时，p是质数。这是费马小定理的一个特殊情况。然而，这一假说的前设是错的：例如，，而341=11×31是一个伪素数（质数）。所有的伪素数（质数）都是此假说的反例。

卡迈克尔数

如上所述，中国猜测仅有一半是正确的。符合中国猜测但不是素数（质数）的数被称为伪素数（质数）。
更极端的反例是卡迈克尔数：
假设与561互质，则被561除都余1。这样的数被称为卡迈克尔数，561是最小的卡迈克尔数。Korselt在1899年就给出了卡迈克尔数的等价定义，但直到1910年才由卡迈克尔（Robert Daniel Carmichael）发现第一个卡迈克尔数：561。1994年William Alford、Andrew Granville及Carl Pomerance证明了卡迈克尔数有无穷多个。

Python程式码

1 >>> n =221 2 >>>a = 38 3 >>>pow(a ,n -1,n) 4 1 5  6 """221 may be a prime number.""" 7  8 import random 9 def isprime(n,k=128):10     if n<2:11         return False12     for _ in range(k):13         a = random.randrange(1,n)14         if pow(a,n-1,n)!=1:15             return False16     return True