# Formulas for finding out if a number is Heptagonal or Octagonal

I am trying to find the formula for finding out if a number is heptagonal. I am also looking for the formula for finding out if a number is octagonal.

I already have the formula for finding out the nth heptagonal number and the nth octagonal number:

heptagonal: $\frac{n(5n - 3)}{2}$

octagonal: $n(3n-2n)$

For example, with these formulas the 20th heptagonal number is 970 and the 20th octagonal number is 1160. What I want to do is be able to do is plug in 1160 into my isOctagonal formula and get back 20th for octagonal. Or 970 and get back 20th for heptagonal.

I have managed to find these reverse formulas for triangular numbers, square numbers, pentagonal numbers, and hexagonal numbers. For example, the triangular one looks like this:$$n = \frac{\sqrt{8x + 1} - 1}{2}$$

Where x is the triangular candidate. If n is a natural number, n is the n-th triangular number.

I have been searching and searching for the heptagonal and octagonal formulas for a long time now and can't seem to find them.

-
Does this help? en.wikipedia.org/wiki/Polygonal_number – Andrew Aug 19 '12 at 22:18
Do you know the quadratic formula? – Micah Aug 19 '12 at 22:19
Andrew - Actually, yes that does, thank you! I was searching specifically for the heptagonal and octagonal formulas and they were never listed on any pages. Never thought to check for a general formulas for all polygonal numbers. Now, hopefully I will be able to understand how to apply it. I'll give it a try. Thanks! – renosis Aug 19 '12 at 22:24
Andrew, that formula works great! With the added bonus that I don't have to define different functions for every n-gonal number I want to find. I can just have one master isNGonal(s, n) and change s to represent the number of sides I am checking for! – renosis Aug 19 '12 at 23:13
Now that you have an answer, why not write it up and post it as an answer? This is permitted, even encouraged on this site. Then after a couple of days you can accept your own answer - again, that's encouraged - and close the books on it. – Gerry Myerson Aug 19 '12 at 23:27

For a given s-gonal number P(s, n) = x, one can find n by:

$$n = \frac{\sqrt{(8s - 16)x + (s - 4)^2} + s -4}{2s-4}$$

Where n is a natural number, n is the n-th s-gonal number.

here is the Javascript function I will be using in my program:

function isNgonal(s, x) {
var n = (Math.sqrt(x * (8 * s - 16) + Math.pow(s - 4, 2)) + s - 4) / (2 * s - 4);
if(n % 1 === 0) { return n; } else { return false; }
}


Where s is the number of sides and x is known polygonal number. If n is a natural number, n = the n-th s-gonal number

-
Another way to write it: $$\frac{s-4+\sqrt{s^2+8(s-2)(x-1)}}{2(s-2)}$$ – J. M. Aug 21 '12 at 1:06