素数
素数与合数的定义,见 数论基础。
素数计数函数:小于或等于
素性测试
素性测试(Primality test)可以用于判定所给自然数是否为素数。
素性测试有两种:
- 确定性测试:绝对确定一个数是否为素数。常见例子包括试除法、Lucas–Lehmer 测试和椭圆曲线素性证明。
- 概率性测试:通常比确定性测试快很多,但有可能(尽管概率很小)错误地将 合数 识别为质数(尽管反之则不会)。因此,通过概率素性测试的数字被称为 可能素数,直到它们的素数可以被确定性地证明。而通过测试但实际上是合数的数字则被称为 伪素数。有许多特定类型的伪素数,最常见的是费马伪素数,它们是满足费马小定理的合数。概率性测试的常见例子包括 Miller–Rabin 测试。
试除法
暴力做法自然可以枚举从小到大的每个数看是否能整除。
参考实现
1 2 3 4 5 6 |
|
1 2 3 4 5 6 7 |
|
这样做是十分稳妥了,但是真的有必要每个数都去判断吗?
很容易发现这样一个事实:如果
这个结论告诉我们,对于每一对
由于
参考实现
1 2 3 4 5 6 |
|
1 2 3 4 5 6 7 |
|
Fermat 素性测试
Fermat 素性检验 是最简单的概率性素性检验。
我们可以根据 费马小定理 得出一种检验素数的思路:
基本思想是不断地选取在
参考实现
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 10 |
|
如果
很遗憾,费马小定理的逆定理并不成立,换言之,满足了
Carmichael 函数
对正整数
恒成立的最小正整数
即:
Carmichael 函数有如下性质:
-
(Carmichael 定理)对任意素数
和任意正整数 ,进而有:
-
对任意正整数
,有 -
对任意正整数
, ,有
-
-
令
的唯一分解式为 ,则由 中国剩余定理 和 Carmichael 定理易证。
进而有:
- 对任意正整数
, ,有
- 对任意正整数
Carmichael 数
对于合数
比如
我们可以用如下方法判断合数
Korselt 判别法[^korselt1899probleme]
合数
上述判别法可简化为:
Carmichael 数判别法
合数
Carmichael 数有如下性质:
- Carmichael 数无平方因子且至少有
个不同的质因子。 -
设
为小于 的 Carmichael 数个数,则:-
(Alford, Granville, Pomerance. 1994[^alford1994infinitely])
。由此可知 Carmichael 数有无限多个。
-
(Erdős. 1956[^erdos1956pseudoprimes])$C(n)
-
本页面最近更新:2025/7/17 08:50:55,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:Ir1d, Tiphereth-A, Xeonacid, c-forrest, Enter-tainer, StudyingFather, iamtwz, ksyx, Marcythm, MegaOwIer, 383494, Alpacabla, abc1763613206, alphagocc, Backl1ght, CCXXXI, drkelo, Early0v0, Great-designer, greyqz, GuanghaoYe, H-J-Granger, HeRaNO, HHH2309, isdanni, kenlig, lazyasn, Menci, ouuan, r-value, shawlleyw, shopee-jin, shuzhouliu, Siger Young, TrisolarisHD, untitledunrevised, void-mian, Voileexperiments, weilycoder, xtlsoft, yusancky, YuzhenQin1
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用