JSFiddle - React, Tailwind, and code Playground
by tara5
JavaScript
function dickson(r) {
var triples = [],
squareRdiv2 = (r * r) / 2,
x,
y,
z;
var factArray = factorize(squareRdiv2);
for (var j = 0; j < factArray.length; j++) {
triples.push([r + factArray[j][1], r + factArray[j][0], r + factArray[j][1] + factArray[j][0]]);
}
return triples;
}
function factorize(number, divider, array, leftArray) {
var factorizationArray = array || [],
isDividable = true,
leftArray = leftArray || [],
divider = divider || 1;
var modulo = number % divider,
left = modulo ? 0 : number / divider;
if (left === 1) {
return;
}
left && (leftArray.indexOf(divider) === -1) && factorizationArray.push([left, divider]);
left && leftArray.push(left);
divider = divider + 1;
factorize(number, divider, factorizationArray, leftArray);
return factorizationArray;
}
function findThousand() {
var notFound = true,
foundTriple,
r = 6;
while (notFound) {
var array = dickson(r);
for (var i = 0; i < array.length; i++) {
if (array[i][0] + array[i][1] + array[i][2] === 1000) {
foundTriple = array[i];
notFound = false;
break;
}
}
r = r + 2;
}
return foundTriple;
}
console.log(findThousand());