Problem 50

Run Settings
LanguageJavaScript
Language Version
Run Command
function isPrime(number) { if (number == 1 || number == 0) {return false} const threshold = Math.ceil(Math.sqrt(number)) for (let i = 2; i < threshold+ 1; i++) { if ( number % i === 0) { return false; } } return true; } function fillPrimeArray(upperThreshold) { const resultArr = []; for (let i = 0; i <= upperThreshold; i++) { if (isPrime(i)) { resultArr.push(i); } } return resultArr; } // console.log(fillPrimeArray(1000000)); function findPrimeWithLongestConsecutive(upperThreshold) { const primeArr = [...fillPrimeArray(upperThreshold)] const optimum = { sum: 0, numberOfSummands: 0, firstSummand: 0, lastSummand: 0 } const current = { sum: primeArr[0], numberOfSummands: 1, firstSummand: primeArr[0], lastSummand: primeArr[0], optimumTradeOff: 0, optimumNumberOfSummands: 0 } // We do not need to check above i=1000 definetly... for (let i = 1; i < 1000; i++) { for (let j = i + current.numberOfSummands; j < primeArr.length; j++) { current.lastSummand = primeArr[j]; current.numberOfSummands += 1; current.sum += primeArr[j]; if (current.sum > upperThreshold) {continue} if (isPrime(current.sum) && current.numberOfSummands > optimum.numberOfSummands) { optimum.numberOfSummands = current.numberOfSummands; optimum.firstSummand = current.firstSummand; optimum.lastSummand = current.lastSummand; optimum.sum = current.sum current.optimumTradeOff = current.sum current.optimumNumberOfSummands = optimum.numberOfSummands } } current.firstSummand = primeArr[i]; current.optimumNumberOfSummands = current.optimumNumberOfSummands - 1 ; current.numberOfSummands = current.optimumNumberOfSummands; current.optimumTradeOff = current.optimumTradeOff - primeArr[i-1] current.sum = current.optimumTradeOff; // console.log(i) // console.log(current) // console.log(optimum) } return optimum; } console.log(findPrimeWithLongestConsecutive(1000000))
Editor Settings
Theme
Key bindings
Full width
Lines