curriculum/challenges/english/blocks/project-euler-problems-1-to-100/5900f3981000cf542c50feab.md
Pentagonal numbers are generated by the formula, P<sub>n</sub>=n(3n−1)/2. The first ten pentagonal numbers are:
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
It can be seen that P<sub>4</sub> + P<sub>7</sub> = 22 + 70 = 92 = P<sub>8</sub>. However, their difference, 70 − 22 = 48, is not pentagonal.
Find the pair of pentagonal numbers, P<sub>j</sub> and P<sub>k</sub>, for which their sum and difference are pentagonal and D = |P<sub>k</sub> − P<sub>j</sub>| is minimized; what is the value of D?
pentagonNumbers() should return a number.
assert(typeof pentagonNumbers() === 'number');
pentagonNumbers() should return 5482660.
assert.strictEqual(pentagonNumbers(), 5482660);
function pentagonNumbers() {
return true;
}
pentagonNumbers();
function pentagonNumbers() {
function isPentagonal(num) {
// Formula found by solving pentagonal number
// equation for n.
const n = (Math.sqrt((24 * num) + 1) + 1) / 6;
return n % 1 === 0;
}
function pentagonal(num) {
return (num * ((3 * num) - 1)) / 2;
}
let result;
let i = 1;
while (!result) {
i++;
const num1 = (i * ((3 * i) - 1)) / 2; // Pentagonal num formula
const minDiff = num1 - (((i - 1) * ((3 * (i - 1)) - 1)) / 2);
let j = i - 1;
while (j > 0 && !result) {
const num2 = (j * ((3 * j) - 1)) / 2;
if (isPentagonal(num1 - num2) && isPentagonal(num1 + num2)) {
result = num1 - num2;
}
j--;
}
}
return result;
}