找回密码
 欢迎注册
楼主: 无心人

[讨论] 10秒内计算出1亿素数表, 不输出

[复制链接]
发表于 2011-6-2 12:34:42 | 显示全部楼层
那个GlobalAlloc函数以前没用过,置0的速度比memset函数的速度快吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-6-2 13:13:25 | 显示全部楼层
置0的速度不会比memset函数的速度快。windows下可以试试 VirtualAlloc . GlobalAlloc基本上淘汰了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-6-12 20:53:52 | 显示全部楼层
98# liangbch 这个算法有点老了, 新的改进算法 "Computation of pitable(x): Improvement to THE MEISSEL, LEHMER, LAGARIAS, MILLER, ODLYZKO METHOD Deleglise and Rivat method 用这个算法实现我的pi程序, 实现有点粗糙, 还有非常大的优化余地, 自我感觉1秒计算PI(1e12)是可行的。 pi(1e10) = 455052511, time use 125 ms pi(1e11) = 4118054813, time use 1102 ms pi(1e12) = 37607912018, time use 11349 ms

meissel3.cpp

28.82 KB, 下载次数: 8, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

快速计算pi(n)

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-6-13 11:18:36 | 显示全部楼层
不知道楼上看的是不是这个 http://en.wikipedia.org/wiki/Prime-counting_function
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-6-14 22:02:32 | 显示全部楼层
我是不行的了。 不过如果是用巨型计算机来实现,算不算作弊?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-6-15 10:09:22 | 显示全部楼层
在GMP下如果实现呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-6-18 15:20:32 | 显示全部楼层
原来这么早就有讨论这玩意了,记录下!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-6-28 20:00:18 | 显示全部楼层
圆周率314159是素数,圆周率100000000位内含有多少素数?(从314159........) 31415926535897932384626433832795028841也是素数。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-11-25 21:05:59 | 显示全部楼层
我去看了看Atkin筛的原理,咋感觉不如咱这里讨论的分块筛法呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-11-25 22:18:26 | 显示全部楼层
本帖最后由 chyanog 于 2013-11-25 22:22 编辑

Mathematica用筛法求10^8以内的素数 4s (CPU 2.1GHZ),比Prime@Range@PrimePi[10^7] // Length // AbsoluteTiming要快,
参考了Matlab函数primes的算法,但比matlab的快点

2013-11-25_221554.png

  1. primes[n_] := Block[{p = Range[1, n, 2]},
  2.    p[[1]] = 2;
  3.    Do[If[p[[(k + 1)/2]] != 0, p[[1/2 (k^2 + 1) ;; ;; k]] = 0], {k, 3,  n^.5, 2}];
  4.    SparseArray[p]["NonzeroValues"]
  5.    ];

  6. primes[10^8] // Length // AbsoluteTiming
复制代码


毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-24 08:22 , Processed in 0.024801 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表