gmpy 源代码
有没有什么办法可以查看 gympy
的源代码?具体来说,就是 gmpy2.is_prime
这个部分。
我试过各种链接:
- https://code.google.com/p/gmpy/source/checkout
- https://code.google.com/p/gmpy/source/browse/#svn%2Ftrunk%2Fsrc
- https://github.com/qsnake/gmpy
但是我哪里都找不到。
我已经下载了 gmpy2,并在我的本地硬盘上查看过,但文件的扩展名是 .pyd
。当我用记事本打开它时,看到的前几行是:
MZ ÿÿ ¸ @ ð º ´ Í!¸LÍ!This program cannot be run in DOS mode.
后面的内容都是乱码。
我想写一个非常快速的质数检查器,而这是我目前见过的最好的。有没有人能告诉我怎么能找到源代码?或者给我一些其他快速质数检查器的源代码链接(或者讨论)?
2 个回答
3
它对应于 Pympz_is_prime
这个C语言函数,想查看这个函数的源代码可以点击这个链接。
5
我在维护gmpy和gmpy2这两个项目。@cartman和@DJV已经给你们指向了源代码,但我想再补充一些说明。
mpz_probab_prime_p
这个函数会先进行试除法,然后再进行多次的米勒-拉宾测试。米勒-拉宾测试并不能完全证明一个数字是质数,它主要是很擅长证明一个数字是合数。如果你多次重复这个测试,结果显示这个数字是质数的几率就会很高。不过,有已知的情况是,当只进行12到15次测试时,mpz_probab_prime_p
可能会错误地把合数报告为质数。
一个更有趣的质数测试是BPSW测试。到目前为止,还没有已知的合数被错误地报告为质数,但有人猜测可能存在这样的情况。
gmpy2
里还有几个质数算法,可以作为完整测试的基础。这些算法是基于以下链接中的代码:
http://sourceforge.net/projects/mpzlucas/
http://sourceforge.net/projects/mpzprp/
一些有用的链接: