// M1 TYPECODES+DELOPT
|
|
// 178589010 nodes evaluated in 2.129754 seconds = 83854290 nodes/sec
|
|
// 178589010 nodes evaluated in 2.126711 seconds = 83974273 nodes/sec
|
|
|
|
numbers = 819200; // 1028 primes
|
|
repeats = 10;
|
|
|
|
count = 0;
|
|
|
|
then = cputime();
|
|
|
|
evals = evaluations();
|
|
|
|
for (n = 0; n < repeats; n = n + 1) {
|
|
print("\r", n, "/", repeats);
|
|
let sieve = [];
|
|
count = 0;
|
|
for (i in numbers) sieve.push(nil);
|
|
for (i = 2; i < numbers; i = i + 1) {
|
|
if (!sieve[i]) {
|
|
// print(i, " ");
|
|
count = count + 1;
|
|
for (k = i+i; k < numbers; k = k+i)
|
|
sieve[k] = #t;
|
|
}
|
|
}
|
|
count;
|
|
}
|
|
|
|
evals = evaluations() - evals;
|
|
|
|
now = cputime();
|
|
secs = now - then;
|
|
|
|
print("\r", count, " primes in the first ", numbers, " numbers\n");
|
|
print(evals, " nodes evaluated in ",
|
|
secs, " seconds = ",
|
|
round(evals / secs), " nodes/sec\n");
|