很多素数,非常快。使用Primesieve。

pyprimesieve的Python项目详细描述


pyprimesieve

很多素数,非常快。使用primesieve

primeseen是可用的最快(如果不是最快)的primeseen实现之一,它由 金瓦利希。

< P>使用带轮分解的埃拉托色尼的分段筛子来处理^ {TT1}$操作的复杂性。

性能

关于PrimeScript的C++:

primesieve generates the first 50,847,534 primes up to 10^9 in just 0.4 seconds on a single core of an Intel Core i7-920 2.66GHz, this is about 50 times faster than an ordinary C/C++ sieve of Eratosthenes implementation and about 10,000 times faster than trial-division. primesieve outperforms [Kim’s] older ecprime (fastest from 2002 to 2010) by about 30 percent and also substantially outperforms primegen the fastest sieve of Atkin implementation on the web.

相比之下,在英特尔酷睿i7 2GHz上,pyprimesieve会填充第一个 在1.40秒内完成50847534个质数。预期Python实现会比C++慢,但是 令人惊讶的是,只有一秒钟。

pyprimesieve优于所有最快的python质数筛选实现。

生成100万以下所有素数并在python中迭代它们的时间(ms):

algorithmtime
pyprimesieve2.79903411865
primesfrom2to13.1568908691
primesfrom3to13.5800838470
ambi_sieve16.1600112915
rwh_primes238.7749671936
rwh_primes148.5658645630
rwh_primes52.0040988922
sieve_wheel_3059.3869686127
sieveOfEratosthenes59.4990253448
ambi_sieve_plain161.740064621
sieveOfAtkin232.724905014
sundaram3251.194953918

这里可以看到,pyprimesieve比使用Numpy和 ^{em1}比最快的纯python筛快13.85倍。

所有的基准脚本和算法都可以复制。采用质数筛算法实现 来自this discussion on SO

功能

primes(n):指向n的素数列表。

primes(start,n):从startn的素数列表。

primes_sum(n):到n的素数之和。将为 给定的数字和系统。

primes_sum(start,n):从startn的素数之和。最佳线程数为 为给定的数字和系统确定。

primes n(n):第n个素数。

factorize(n):表示n的素数因子分解的元组列表(素数,幂)。

安装

pip install pyprimesieve

note:要启用基本求和的并行化版本,必须使用支持openmp的编译器。你可以 需要将有效的编译器作为环境变量传递。

测试

安装后,您可以通过在项目根文件夹中运行以下命令来确保一切正常工作,

python tests

许可证

“修改的BSD许可证”。有关详细信息,请参见许可证。Jared Suttles版权所有,2015年。

更改

0.1.6(2015-07-07)

  • python 3支持
  • 不再假设setup.py中的g++,而是尝试使用openmp安装,如果失败则重试

0.1.5(2015-07-05)

  • 添加到PYPI

0.1.4(2013-08-06)

  • 并行素数求和现在是一个类
    • 调用回调方法的线程在大输入时不同步,因此速度更快
    • 更新了Bench中的自述文件以反映新的计时(小的输入稍差,大的则快一倍)

0.1.3(2013-08-05)

  • 修复了编译警告
  • 外部“C”
  • 向自述文件添加了有关安装的更多信息;更新了docstring

0.1.2(2013-07-12)

  • 素数使用回调类而不是创建任何pyobject来调用素数
    • 导致内存泄漏且不必要

0.1.1(2013-07-12)

  • distutils setup.py:使用openmp进行多线程求和编译
    • 删除了手动编译可执行文件的所有代码
    • 设置c c和cxx环境变量以避免clang(和其他非openmp ccompilers)使用
  • 用实际扩展名中的并行函数替换可执行代码
  • 重写C++中的PrimeSySUM和PrimeSnthPython函数,并完全删除Python脚本

0.1.0(2013-07-06)

  • pyprimesieve初始值

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
当注释bean用作另一个bean中的集合时,java自定义约束验证器不工作   毕加索中的java错误get()无法应用于(安卓.content.Context)   java RSA Encryption生成带有“\n”字符的字符串,我无法解密   java使用无线路由器访问Wamp   java EhCache磁盘持久性可以持久化任意对象   将文件复制到数组(Java)   Java JScience:如何打印整个实数?   用户界面在JAVA中鼠标点击“设置”按钮时如何获取文本字段内容   JAVA中ArrayList<ArrayList>的深度副本   eclipse的java代码感知样式自动完成   netbeans 7无法从另一个平台运行java项目   hbm中的java异常。xml   java在电子邮件正文中发送HTML   按名称列出的tomcat Java jconsole应用程序   在活动之间传递ArrayList的java机制   Java中long的模运算符是什么?