很多素数,非常快。使用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第三方库


热门话题
java不调用未来。有什么问题吗?   isSelected(),isDisplayed在selenium、java for checkbox中不适用于我。其中xpath不显示是选中还是未选中   java在线应用程序创建者是如何工作的?是否有任何示例源代码可供查看?   Rest服务中的java Spring启动自定义异常   java将成员对象添加到ArrayList<Membership>   关键字这个Java项目如何使用语言保留字作为标识符?   字符串格式如何在Java中打印列中的双精度数组   java libgdx动画仅在事件上出现一次   java如何使用spring。应用docker容器上RestTemplate url中的名称?   java Hibernate UnuniqueObjectException:具有相同标识符值的不同对象已与会话关联   使用leapmotion、光标显示的java处理   java Libgdx Box2D仅针对少数特定对象控制冲突响应   带外键的java Spring数据JPA@Query:参数不匹配   java在我的“ifelse”语句中遇到问题,我不知道如何将文本字段转换为整数(或其他)   java Maven插件没有在我希望的地方运行