Nearest polygonal number def nearest_polygonal_number(n, s): Any positive integer s > 2 defines an infinite sequence of s-gonal numbers whose i:th element is given by the formula ((s-2)i^2 - (s-4)i)/2, as explained on the Wikipedia page "Polygonal Number". In this formula, positions start from 1, not 0, and we use the letter i to denote the position since we will be using the letter n for something else. For example, the sequence of "octagonal numbers" that springs forth from s = 8 starts with 1, 8, 21, 40, 65, 96, 133, 176... Given the number of sides s and an arbitrary integer n, this function should return the s-gonal integer closest to n. If n falls exactly halfway between two s-gonal numbers, return the smaller one. n s Expected result 5 3 6 27 4 25 450 9 474 10**10 42 9999861561 10**100 91 10000000000000000000000000000000000000000000 00000041633275351832947889775579470433400300 3544212420356
Nearest polygonal number
def nearest_polygonal_number(n, s):
Any positive integer s > 2 defines an infinite sequence of s-gonal numbers whose i:th element is given by the formula ((s-2)i^2 - (s-4)i)/2, as explained on the Wikipedia page "Polygonal Number". In this formula, positions start from 1, not 0, and we use the letter i to denote the position since we will be using the letter n for something else. For example, the sequence of "octagonal numbers" that springs forth from s = 8 starts with 1, 8, 21, 40, 65, 96, 133, 176...
Given the number of sides s and an arbitrary integer n, this function should return the s-gonal integer closest to n. If n falls exactly halfway between two s-gonal numbers, return the smaller one.
n | s | Expected result |
5 | 3 | 6 |
27 | 4 | 25 |
450 | 9 | 474 |
10**10 | 42 | 9999861561 |
10**100 | 91 | 10000000000000000000000000000000000000000000 00000041633275351832947889775579470433400300 3544212420356 |
Step by step
Solved in 3 steps with 3 images