Problem 47

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 primeFactorize(number) { //let resultArr = []; //let balance = number; //const threshold = Math.ceil(Math.sqrt(number)) //for (let i = number - 1; i > 1; i--) { //if (number % i === 0) { //while (balance % i === 0) { //resultArr = resultArr.concat(primeFactorize(i)) //balance = balance / i; //} //} //if (balance === 1) {return resultArr } //} //return [number]; //} function primeFactorize(num) { const resultArr = []; let remainDivisor = num; let actualDivisor = 1; const alreadyDivided = []; while (!(remainDivisor === 1)) { const r = getNextDivisor(alreadyDivided, actualDivisor) actualDivisor = r[0]; if (!r[1]) {alreadyDivided.push(actualDivisor) } let resultNumber = 1; while ((remainDivisor % actualDivisor) === 0) { resultNumber *= actualDivisor; remainDivisor = remainDivisor / actualDivisor; } if (resultNumber !== 1) { resultArr.push(resultNumber) } } return resultArr; } //console.log(primeFactorize(644)); function getNextDivisor(checkedDivisors, lastDivisor) { let counter = lastDivisor; let foundNext = false; let fromAlreadyDivided = false; while (!foundNext) { counter++; const isCounterAlreadyDone = checkedDivisors.some(d => (counter % d === 0)) if (isCounterAlreadyDone) { fromAlreadyDivided = true; } if (!isCounterAlreadyDone) { foundNext = true; } } return [counter, fromAlreadyDivided] ; } class PrimeStack { stack = []; constructor(numberOfPrimeFactors) { this.numberOfPrimeFactors = numberOfPrimeFactors; } get stack() { return this.stack; } push(inputArr) { //const resultArr = []; //const transferArr = []; //let betweenCounter = 0; //inputArr.sort((a,b) => a - b); //for (let i = 0; i < inputArr.length; i++) { //if ( i === 0 ) { //betweenCounter = inputArr[0]; //} //if ( i > 0) { //if ( inputArr[i] === inputArr[i-1] ) { //betweenCounter *= inputArr[i] //} else { //resultArr.push(betweenCounter); //betweenCounter = inputArr[i]; //} //} //} //resultArr.push(betweenCounter) if (inputArr.length !== this.numberOfPrimeFactors) { this.stack = []; return; } //resultArr.sort((a,b) => a - b); //if (resultArr.length === this.numberOfPrimeFactors) { //} this.stack = this.checkIntegrityWithStack(inputArr) } checkIntegrityWithStack(inputArr) { const transArr = [inputArr]; for (let i = this.stack.length -1 ; i >= 0; i--) { if (!this.haveCommonFactor(inputArr, this.stack[i])) { transArr.unshift(this.stack[i]) } else { return transArr; } } return transArr; } haveCommonFactor(arr1, arr2) { for (let a of arr1) { if (arr2.includes(a)) { return true;} } return false; } } //const myStack = new PrimeStack(3); //myStack.push(primeFactorize(645)) //myStack.push(primeFactorize(646)) //console.log(myStack.stack) //let myStack = new PrimeStack(4) //for (let i = 1; i < 80000; i++) { //myStack.push(primeFactorize(i)) //if ( myStack.stack.length === 3) { //console.log(i); //console.log(myStack.stack) //return; //} } //let myStack = new PrimeStack(4) //for (let i = 10000; i < 50000; i++) { //myStack.push(primeFactorize(i)) //if ( myStack.stack.length === 4) { //console.log(i); //console.log(myStack.stack) //return; //} // // // } function dirtyCheck(number) { const numberArr = [2,3,5,7,11] let checkArr = [0,0,0,0,0]; for (let i in numberArr ) { if ( number % numberArr[i] === 0 ) { checkArr[i] = number % ( numberArr[i] * numberArr[i]) === 0 ? 0 : 1; } } return checkArr; } // for (let i = 2; i < 17; i++) { // console.log(i + ': ', dirtyCheck(i)) // } //class DirtyStack { //stack = []; //constructor(stackSize) { //this.stackSize = stackSize; //} // // //push(inputArr) { //this.stack = this.checkIntegrityWithStack(inputArr) //} // //checkIntegrityWithStack(inputArr) { //const transArr = [inputArr]; //for (let i = this.stack.length -1 ; i >= 0; i--) { //const resultVector = [] //for (let j in inputArr) { //resultVector.push(this.stack[i][j] + inputArr[j]) //} //if (!resultVector.find(x => x > 1)) { //transArr.unshift(this.stack[i]) //} else { //return transArr; //} //} //return transArr; //} // //} // // //myDirtyStack = new DirtyStack(4); //for (let i = 1000; i < 10000; i++) { // //myDirtyStack.push(dirtyCheck(i)) // if ( myDirtyStack.stack.length === 3) { // console.log(i); // console.log(myDirtyStack.stack) // // return; // } //} //
Editor Settings
Theme
Key bindings
Full width
Lines