function isPrime(number) {
if (number === 1) {return false}
const threshold = Math.ceil(Math.sqrt(number));
for (let i = threshold; i > 1; i--) {
if (number % i === 0 ) {
return false;
}
}
return true;
}
function arrayToNumber(inputArr) {
return inputArr.reduce((a,b, index) => a + b * 10 ** (inputArr.length - 1 - index), 0)
}
function giveTruncatedPrimes(inputArr) {
const elegibleNumbers = [1,3,5,7,9]
if (inputArr.length === 1000000) {return []}
const outputArr = [];
if (!isPrime(arrayToNumber(inputArr)) ) {
return [];
}
outputArr.push(inputArr)
for (let i of elegibleNumbers) {
outputArr.push(...giveTruncatedPrimes([i, ...inputArr]))
}
// console.log(inputArr, ' --- ', outputArr)
// console.log(inputArr, ' --- ', outputArr.filter(x => isPrime(arrayToNumber(x.slice(x.length - inputArr.length)))))
// console.log(inputArr, ' --- ', outputArr.map(x => x.slice( 0, (x.length - inputArr.length)) ))
const filterFunction = (x) => isPrime(arrayToNumber(x.slice(0, x.length - inputArr.length + 1 )))
return outputArr.filter(filterFunction).filter(x => x.length > 1)
}
console.log(giveTruncatedPrimes([]).map(arrayToNumber))
// console.log(giveTruncatedPrimes([]).map(arrayToNumber).reduce((a, b) => a + b, 0))