在博文(1)和(2)里分别用了4中方式写一个素数筛选的算法,分别是javascript in browser、node.js、ruby和c;最终的结果是c最快,node.js其次,js in b虽然也不慢,但极不稳定,所以排在第三,ruby最慢。 现在我们在linux64中用汇编语言重写sieve算法,看看动用最终的武器:汇编语言,我们能不能进一步优化素数筛选算法。 如果忘了算法逻辑,不要紧,下面分别再次贴出node.js、ruby以及c的sieve代码: 首先是node.js:
function
sieve(n){
var a = new Int8Array(n+1);
var max = Math.floor(Math.sqrt(n));
var p = 2;
while
(p <= max){
for
(var i=2*p;i<=n;i+=p)
a[i] = 1;
(a[++p]); /* empty */
}
(a[n]) n--;
return
n;
def sieve(n)
a = Array.new(n+1);
max = Math.sqrt(n).to_i;
p = 2;
p<=max
do
i = 2*p
i<=n
a[i] = 1
i+=p
end
a[p+=1] == 1
a[n]
n-=1 end
n
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!