【发布时间】:2015-03-17 04:49:14
【问题描述】:
我正在尝试使用 Potion 编写一个程序,打印每 100K 个奇数素数直到 10M,我的代码:
last = 3
res = (last) # create array
loop:
last += 2
prime = true
len = res length -1
i = 0
while(i<len):
v = res at(i)
if(v*v > last): break.
if(last%v == 0): prime = false, break.
i += 1
.
if(prime):
res append(last)
if(res size % 100000 == 0): last print.
if(last>9999999): break.
.
.
但这给了Segmentation fault (core dumped),不知道怎么了?
供参考,工作Ruby版本:
res = [last=3]
loop do
last += 2
prime = true
res.each do |v|
break if v*v > last
if last % v == 0
prime = false
break
end
end
if prime
res << last
puts last if res.length % 100000 == 0
break if last > 9999999
end
end
输出应该是:
1299721
2750161
4256249
5800139
7368791
8960467
不,这不是家庭作业,只是出于好奇。
【问题讨论】:
-
顺便说一句:固定版本的药水需要 6m31.999s。算法不是很好,但这里的 vm 是罪魁祸首。可怕。红宝石只需要 32 秒
-
作为参考:我正在研究这个更快的素数示例:github.com/perl11/potion/blob/master/example/prime.pn
-
很好,但这就是基准^_^