|
1 // The Great Computer Language Shootout |
|
2 // http://shootout.alioth.debian.org/ |
|
3 // |
|
4 // modified by Isaac Gouy |
|
5 |
|
6 function pad(number,width){ |
|
7 var s = number.toString(); |
|
8 var prefixWidth = width - s.length; |
|
9 if (prefixWidth>0){ |
|
10 for (var i=1; i<=prefixWidth; i++) s = " " + s; |
|
11 } |
|
12 return s; |
|
13 } |
|
14 |
|
15 function nsieve(m, isPrime){ |
|
16 var i, k, count; |
|
17 |
|
18 for (i=2; i<=m; i++) { isPrime[i] = true; } |
|
19 count = 0; |
|
20 |
|
21 for (i=2; i<=m; i++){ |
|
22 if (isPrime[i]) { |
|
23 for (k=i+i; k<=m; k+=i) isPrime[k] = false; |
|
24 count++; |
|
25 } |
|
26 } |
|
27 return count; |
|
28 } |
|
29 |
|
30 var ret = 0; |
|
31 function sieve() { |
|
32 for (var i = 1; i <= 3; i++ ) { |
|
33 var m = (1<<i)*10000; |
|
34 var flags = Array(m+1); |
|
35 ret += nsieve(m, flags); |
|
36 } |
|
37 } |
|
38 |
|
39 sieve(); |
|
40 assertEq(ret, 14302) |