File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
test/benchmarks/driver_bench/src/suites/single_bench Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change 1+ import assert from 'node:assert/strict' ;
2+
3+ const findPrimesBelow = 290_000 ;
4+ const expectedPrimes = 25_224 ;
5+
6+ // should never change
7+ export const taskSize = 1.00896 ;
8+
9+ // expected primes * 4 bytes (int32) in MB
10+ assert . equal ( taskSize , expectedPrimes * 4 * 10e-6 ) ;
11+
12+ /** @see https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes */
13+ function sieveOfEratosthenes ( n : number ) {
14+ // Create a boolean array "prime[0..n]" and initialize
15+ // all entries as true. A value in prime[i] will
16+ // become false if i is Not a prime
17+ const prime = Array . from ( { length : n + 1 } , ( ) => true ) ;
18+
19+ // We know 0 and 1 are not prime
20+ prime [ 0 ] = false ;
21+ prime [ 1 ] = false ;
22+
23+ for ( let p = 2 ; p * p <= n ; p ++ ) {
24+ // If prime[p] is not changed, then it is a prime
25+ if ( prime [ p ] === true ) {
26+ // Update all multiples of p as false
27+ for ( let i = p * p ; i <= n ; i += p ) {
28+ prime [ i ] = false ;
29+ }
30+ }
31+ }
32+
33+ // Collecting all prime numbers
34+ const primes = [ ] ;
35+ for ( let i = 2 ; i <= n ; i ++ ) {
36+ if ( prime [ i ] === true ) {
37+ primes . push ( i ) ;
38+ }
39+ }
40+
41+ return primes ;
42+ }
43+
44+ export async function run ( ) {
45+ assert . equal ( sieveOfEratosthenes ( findPrimesBelow ) . length , expectedPrimes ) ;
46+ }
You can’t perform that action at this time.
0 commit comments