{ // calculate and show some primorial numbers 'use strict' let primorial = 1n let prime = 1n let pn = [] const maxNumber = 2000000 let isPrime = [] for( let i = 1; i <= maxNumber; i ++ ){ isPrime[ i ] = i % 2 != 0 } isPrime[ 1 ] = false isPrime[ 2 ] = true const rootMaxNumber = Math.floor( Math.sqrt( maxNumber ) ) for( let s = 3; s <= rootMaxNumber; s += 2 ){ if( isPrime[ s ] ){ for( let p = s * s; p <= maxNumber; p += s ){ isPrime[ p ] = false } } } const primeMax = 100000 pn[ 0 ] = 1 let nextToShow = 10 let reducedDigits = 0 const n500 = 10n**500n const n1000 = 10n**1000n for( let i = 1; i <= primeMax; i ++ ){ // find the next prime prime += 1n while( ! isPrime[ prime ] ){ prime += 1n } primorial *= prime if( i < 10 ){ pn[ i ] = primorial } else if( i == nextToShow ){ if( nextToShow < 10000 ){ nextToShow *= 10 } else{ nextToShow += 10000 } if( i == 10 ){ console.log( "primorials 0-9: ", pn.toString() ) } // show the number of digits in the primorial let p = primorial let length = 0 while( p > 0 ){ length += 1 p /= 10n } console.log( "length of primorial " + i + " is "+ ( reducedDigits + length ) ) } if( primorial > n1000 ){ // the number has more than 1000 digits - reduce it to 500-ish primorial /= n500 reducedDigits += 500 } } }