Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|cite|improve this question
Does this help? – 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
up vote 2 down vote accepted

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

share|cite|improve this answer
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

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.