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)i2 - (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. As you can see from the last row of the previous table, this function must be efficient even for gargantuan values of n. The simplest way to make this function efficient is to harness the power of repeated halving to pull your wagon with a clever application of binary search. Start with two integers a and b wide enough that they satisfy a<=i<=b for the currently unknown position i that the nearest polygonal number is stored in. (Just initialize these as a=1 and b=2, and keep squaring b until the s-gonal number in that position gets too big. It's not like these initial bounds need to be accurate.) From there, compute the midpoint position (a+b)//2, and look at the element in that position. Depending on how that midpoint element compares to n, bring either b or a to the midpoint position. Continue this until the gap has become small enough so that b-a<2, at which point one last comparison tells you the correct answer.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

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)i2 - (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.

As you can see from the last row of the previous table, this function must be efficient even for gargantuan values of n. The simplest way to make this function efficient is to harness the power of repeated halving to pull your wagon with a clever application of binary search. Start with two
integers a and b wide enough that they satisfy a<=i<=b for the currently unknown position i that the nearest polygonal number is stored in. (Just initialize these as a=1 and b=2, and keep squaring b until the s-gonal number in that position gets too big. It's not like these initial bounds need to be accurate.) From there, compute the midpoint position (a+b)//2, and look at the element in that position. Depending on how that midpoint element compares to n, bring either b or a to the midpoint position. Continue this until the gap has become small enough so that b-a<2, at which point one last comparison tells you the correct answer.

n
Expected result
3
27
4
25
450
9.
474
10**10
42
9999861561
10**100
91
10000000000000000000000000000000000000000000
00000041633275351832947889775579470433400300
3544212420356
Transcribed Image Text:n Expected result 3 27 4 25 450 9. 474 10**10 42 9999861561 10**100 91 10000000000000000000000000000000000000000000 00000041633275351832947889775579470433400300 3544212420356
Expert Solution
steps

Step by step

Solved in 2 steps with 3 images

Blurred answer
Knowledge Booster
Array
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education