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