Pentagonal numbers are generated by the formula, Pn=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 P4 + P7 = 22 + 70 = 92 = P8. However, their difference, 70 − 22 = 48, is not pentagonal.
Find the pair of pentagonal numbers, Pj and Pk, for which their sum and difference are pentagonal and D = |Pk − Pj| is minimised; what is the value of D?
#include <iostream>
using namespace std;
int compute(int a)
{
return a*(3 * a - 1) / 2;
}
bool ok(int a)
{
for (int i = 1; i*(3*i-1) <= 2*a; i++)
{
if (i*(3 * i - 1) == 2 * a)
return true;
}
return false;
}
int main()
{
for (int i = 2; i <= 3000; i++)
{
for (int j = 1; j < i; j++)
{
int plus = compute(i) + compute(j);
int diff = compute(i) - compute(j);
if (ok(plus) && ok(diff))
cout << diff << endl;
}
}
system("pause");
return 0;
}