Aller au contenu

Subdivisions de polygone⚓︎

Les nombres d'Hipparque sont nommés d'après le mathématicien et astronome grec, qui, selon Plutarque, connaissait certainement ces nombres.

Culture

  • Hipparque a été actif en Grèce, au moins entre 147 et 127 av. J.-C.
  • Plutarque est un philosophe majeur de la Rome antique, qui a vécu de 46 à 125, soit deux siècles après Hipparque.

Les \(s_4=11\) subdivisions d'un pentagone

On admettra que :

  • Le \(n\)-ième nombre \(s_n\) de la suite est le nombre de subdivisions d'un polygone à \(n + 1\) côtés en polygones plus petits par l'adjonction de diagonales au polygone de départ.
  • \(s_2=1\), et \(s_3=3\).
  • Une formule pour calculer \(s_n\) avec \(n>3\) est :
\[s_n = \frac{\left((6n-9)s_{n-1} - (n-3)s_{n-2}\right)}n\]

Écrire une fonction telle que hipparque(n) renvoie le nombre \(s_n\) pour \(1 < n <100\).

Exemples
🐍 Console Python
>>> hipparque(3)
3
>>> hipparque(4)
11
>>> hipparque(5)
45
###
# testsbksl-nlbksl-nlassert hipparque(3) == 3bksl-nlassert hipparque(4) == 11bksl-nlassert hipparque(5) == 45bksl-nlbksl-nl# autres testsbksl-nlbksl-nlHIPPARQUE = [bksl-nl None,bksl-nl 1,bksl-nl 1,bksl-nl 3,bksl-nl 11,bksl-nl 45,bksl-nl 197,bksl-nl 903,bksl-nl 4279,bksl-nl 20793,bksl-nl 103049,bksl-nl 518859,bksl-nl 2646723,bksl-nl 13648869,bksl-nl 71039373,bksl-nl 372693519,bksl-nl 1968801519,bksl-nl 10463578353,bksl-nl 55909013009,bksl-nl 300159426963,bksl-nl 1618362158587,bksl-nl 8759309660445,bksl-nl 47574827600981,bksl-nl 259215937709463,bksl-nl 1416461675464871,bksl-nl]bksl-nlbksl-nlfor n, attendu in enumerate(HIPPARQUE):bksl-nl if n > 1:bksl-nl assert hipparque(n) == attendu, f"Erreur avec n = {n}"bksl-nlbksl-nlHIPPARQUEpy-undMOD = [bksl-nl None,bksl-nl 1,bksl-nl 1,bksl-nl 3,bksl-nl 11,bksl-nl 45,bksl-nl 197,bksl-nl 903,bksl-nl 4279,bksl-nl 20793,bksl-nl 103049,bksl-nl 518859,bksl-nl 2646723,bksl-nl 13648869,bksl-nl 71039373,bksl-nl 372693519,bksl-nl 968801519,bksl-nl 463578353,bksl-nl 909013009,bksl-nl 159426963,bksl-nl 362158587,bksl-nl 309660445,bksl-nl 827600981,bksl-nl 937709463,bksl-nl 675464871,bksl-nl 824437545,bksl-nl 294485657,bksl-nl 935918683,bksl-nl 480318899,bksl-nl 548921813,bksl-nl 996567325,bksl-nl 807180831,bksl-nl 87926239,bksl-nl 951594977,bksl-nl 230450209,bksl-nl 624841507,bksl-nl 548259307,bksl-nl 663097869,bksl-nl 27088357,bksl-nl 621111719,bksl-nl 111863447,bksl-nl 607546137,bksl-nl 696929449,bksl-nl 144967147,bksl-nl 440738979,bksl-nl 954316741,bksl-nl 953278125,bksl-nl 47978543,bksl-nl 885177039,bksl-nl 715682513,bksl-nl 593205809,bksl-nl 310379699,bksl-nl 518807003,bksl-nl 524384509,bksl-nl 957814133,bksl-nl 730733495,bksl-nl 574744711,bksl-nl 402287369,bksl-nl 271801017,bksl-nl 461750139,bksl-nl 443027347,bksl-nl 661954997,bksl-nl 728242749,bksl-nl 396893247,bksl-nl 756439999,bksl-nl 101480897,bksl-nl 554808897,bksl-nl 545449539,bksl-nl 655467467,bksl-nl 586444269,bksl-nl 144461061,bksl-nl 343127495,bksl-nl 377432183,bksl-nl 984924409,bksl-nl 508708553,bksl-nl 605678859,bksl-nl 810562179,bksl-nl 900836773,bksl-nl 867845069,bksl-nl 558029903,bksl-nl 937600175,bksl-nl 21098161,bksl-nl 123414609,bksl-nl 345323987,bksl-nl 415937979,bksl-nl 871392477,bksl-nl 945036437,bksl-nl 41456599,bksl-nl 649862247,bksl-nl 703510249,bksl-nl 622510297,bksl-nl 114056347,bksl-nl 136186739,bksl-nl 370983317,bksl-nl 58539869,bksl-nl 902214751,bksl-nl 240745375,bksl-nl 393184673,bksl-nl 752888929,bksl-nl 370649443,bksl-nl]bksl-nlMOD = 10py-strpy-str9bksl-nlfor n, attendu in enumerate(HIPPARQUEpy-undMOD):bksl-nl if n > 1:bksl-nl assert hipparque(n) % MOD == attendu, f"Erreur avec n = {n}"bksl-nlbksl-nl ∞/∞

def hipparque(n):bksl-nl ...bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert hipparque(3) == 3bksl-nlassert hipparque(4) == 11bksl-nlassert hipparque(5) == 45bksl-nlbksl-nlhipparquepy-undmem = [-1, 1, 1, 3]bksl-nlbksl-nlbksl-nldef hipparque(n):bksl-nl i = len(hipparquepy-undmem)bksl-nl while n >= i:bksl-nl difference = (6 py-str i - 9) py-str hipparquepy-undmem[i - 1] - (i - 3) py-str hipparquepy-undmem[i - 2]bksl-nl suivant = difference // ibksl-nl hipparquepy-undmem.append(suivant)bksl-nl i += 1bksl-nl return hipparquepy-undmem[n]bksl-nlbksl-nl

A

Z