4-maths
6-récursivité
7-mémo
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
Lancer # testsbksl-nlbksl-nlassert hipparque(3) == 3bksl-nlassert hipparque(4) == 11bksl-nlassert hipparque(5) == 45bksl-nlbksl-nl# autres testsbksl-nlbksl-nlHIPPARQUE = [bksl-nl None, 1, 1, 3, 11, 45, 197, 903, 4279, 20793, 103049,bksl-nl 518859, 2646723, 13648869, 71039373, 372693519, 1968801519,bksl-nl 10463578353, 55909013009, 300159426963, 1618362158587,bksl-nl 8759309660445, 47574827600981, 259215937709463, 1416461675464871bksl-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 = [None, 1, 1, 3, 11, 45, 197, 903, 4279, 20793, 103049, 518859, 2646723, 13648869, 71039373, 372693519, 968801519, 463578353, 909013009, 159426963, 362158587, 309660445, 827600981, 937709463, 675464871, 824437545, 294485657, 935918683, 480318899, 548921813, 996567325, 807180831, 87926239, 951594977, 230450209, 624841507, 548259307, 663097869, 27088357, 621111719, 111863447, 607546137, 696929449, 144967147, 440738979, 954316741, 953278125, 47978543, 885177039, 715682513, 593205809, 310379699, 518807003, 524384509, 957814133, 730733495, 574744711, 402287369, 271801017, 461750139, 443027347, 661954997, 728242749, 396893247, 756439999, 101480897, 554808897, 545449539, 655467467, 586444269, 144461061, 343127495, 377432183, 984924409, 508708553, 605678859, 810562179, 900836773, 867845069, 558029903, 937600175, 21098161, 123414609, 345323987, 415937979, 871392477, 945036437, 41456599, 649862247, 703510249, 622510297, 114056347, 136186739, 370983317, 58539869, 902214751, 240745375, 393184673, 752888929, 370649443]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 Valider ∞/∞ Télécharger Téléverser Recharger Sauvegarder
def hipparque(n):bksl-nl ...bksl-nlbksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert hipparque(3) == 3bksl-nlassert hipparque(4) == 11bksl-nlassert hipparque(5) == 45bksl-nlbksl-nl hipparquepy-undmem = [-1, 1, 1, 3]bksl-nlbksl-nldef hipparque(n):bksl-nl i = len(hipparquepy-undmem)bksl-nl while n >= i:bksl-nl difference = (bksl-nl (6py-stri - 9) py-str hipparquepy-undmem[i - 1]bksl-nl - (i - 3) py-str hipparquepy-undmem[i - 2]bksl-nl )bksl-nl suivant = difference // ibksl-nl hipparquepy-undmem.append(suivant)bksl-nl i += 1bksl-nl return hipparquepy-undmem[n]bksl-nlbksl-nl
A
Z