那个GlobalAlloc函数以前没用过,置0的速度比memset函数的速度快吗?
置0的速度不会比memset函数的速度快。windows下可以试试 VirtualAlloc .
GlobalAlloc基本上淘汰了。
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
不知道楼上看的是不是这个
http://en.wikipedia.org/wiki/Prime-counting_function
我是不行的了。
不过如果是用巨型计算机来实现,算不算作弊?
在GMP下如果实现呢?
原来这么早就有讨论这玩意了,记录下!
圆周率314159是素数,圆周率100000000位内含有多少素数?(从314159........)
31415926535897932384626433832795028841也是素数。
我去看了看Atkin筛的原理,咋感觉不如咱这里讨论的分块筛法呢?
本帖最后由 chyanog 于 2013-11-25 22:22 编辑
Mathematica用筛法求10^8以内的素数 4s (CPU 2.1GHZ),比Prime@Range@PrimePi // Length // AbsoluteTiming要快,
参考了Matlab函数primes的算法,但比matlab的快点
primes := Block[{p = Range},
p[] = 2;
Do] != 0, p[] = 0], {k, 3,n^.5, 2}];
SparseArray["NonzeroValues"]
];
primes // Length // AbsoluteTiming