Mathematica是怎么计算和判定质数的?速度能那么快
mathematica吧
全部回复
仅看楼主
level 13
Mathematica在本地有个质数库嘛?
Prime[n] 取得很大的质数,速度非常快。
PrimeQ[x] 判断质数速度也很快。
我用python,java写代码判断效率和它差了十条街。
难道它的算法这么优秀?
怀疑它是不是本地有个质数表,存了一些信息,然后在这个基础上在计算出来的?
2022年03月21日 03点03分 1
吧务
level 10
基于数论的算法,如果你是试除法的话差很多是正常的。参考tutorial/SomeNotesOnInternalImplementation。
PrimeQ 首先使用小素数检测整除性,然后使用 Miller-Rabin 强伪素数检测2进制和3进制,最后使用一个 Lucas 测试检测.
至于Prime:Prime 和 PrimePi 使用稀疏缓存和筛选. 对于较大的 n, PrimePi 使用的是基于素数密度的渐进估计的 Lagarias Miller Odlyzko 算法,并被转换给出 Prime.
链接它的包叫 WolframNTL
2022年03月21日 07点03分 2
非常感谢您的回复,我去学习一下相关算法,谢谢。
2022年03月21日 12点03分
1