#!/usr/bin/python from math import sqrt """ Produce the n:th s-gonal number """ def p(s,n): p = ((s-2)*n**2-(s-4)*n)/2 return p """ Return n for the s-gonal number p """ def r(s,p): n = (((s-4.0)/(s-2.0))/2)\ +sqrt((((s-4.0)/(s-2.0))/2)**2\ +(2.0/(s-2.0))*p) return n """ Check whether p is a s-gonal number """ def is_sgonal(s,p): n = int(((s-4.0)/(2.0*s-4.0))\ +sqrt(((s-4.0)**2/(2*s-4.0)**2)\ +((2.0*p)/(s-2.0)))) q = ((s-2.0)*n**2-(s-4)*n)/2 return p == q