En Travaux
difficile
Nombre de zéros de n!
On rappelle que, pour \(n\) un entier naturel, la factorielle de \(n\) se note \(n!\) et se définit comme le produit des entiers de \(1\) à \(n\) compris.
\(0! = 1\) , par définition.
\(1! = 1\)
\(2! = 1×2 = 2\)
\(3! = 1×2×3 = 6\)
\(11! = 1×2×3×4×5×6×7×8×9×10×11 = 39916800\)
\(42! = 1405006117752879898543142606244511569936384000000000\)
On constate que
\(3!\) se termine par aucun zéro.
\(11!\) se termine par 2 zéros.
\(42!\) se termine par 9 zéros.
Construire un tableau d'entiers de longueur 1000 nb_zeros_factorielle, tel que nb_zeros_factorielle[n] contient le nombre de zéros consécutifs à la droite de l'écriture décimale de \(n!\) , pour \(n\) entier inférieur à \(1000\) .
Exemples
>>> nb_zeros_factorielle [ 3 ]
0
>>> nb_zeros_factorielle [ 11 ]
2
>>> nb_zeros_factorielle [ 42 ]
9
>>> len ( nb_zeros_factorielle ) == 1000
True
.65038.128013.9875s3_8èufvIy n7aêSû1me(P24V:Cjtwi][h*)6o;bcdg/0làqp.râ-,=+zk%95Ré050S0w0F0q0H0W0d0n0R0W0q0d0d0)010F0H0Z010406050d0i0v0v0q0#0m040s0O0W0i150O0o0n020q0v0Z0P0n0:0w1f0#0Y0i0w0d050U1c1e1g1i1a0Z041G1N051Q0U1Q1S1N1a0S0H0k0}0 11130K0H0T0K0W1*0K0F18050^0Q0W0w1#1012011)1+1-1+0F1?1^1;0F0Q0O0S1i1=0#1O0F0K0}1l0d0Z0q0o130z011`1%010j0`0w0o1t0w1;2i2k2p1|2s1^2v0v2x040b0n0y0#0O0Z0O0d0H1o1q0?2g0#0#0w0R2S1G2z0o1O0U2e2(0F2c2b2d0S2B131-0o2u2P1;1Y1!0~1{2=0H2@0o281Z1;0Z2X1O2$2(391b2j1q2}2q320#1f0W180n0u2#3d193c2A3f1|3h3j3l0z3o2k3q2$2;013v0q3k040n0e3z2%1a3C3t133F3H0n0A3L3B3d3D3R3l0/3V3N3X3P3E0O3i3G3l0N3$3r3e1$3u3+3w3I0p3:3O3?3Q3^3-3I0g3|3(3~3*3,3S0.443s463Z040u0V4b3=2~473_0u3n1H3p3%4c4k4e0u3y4p3A4r4j3g403H0u3K4x3M3;3Y4C180u3U4G3W4s4B484L3#4O4z4J4S4f3/4O1P371G2{2+0S2/3D0R282H0=1Z1O360w383p3V054.0?4_4Q3u180o0Q0f0+0w2M0d0f0j0q2Z3+0H0w0W1^3V0n4I3)0O180)5j5l4617040J4{3}4k0v0H184h4#5x2q5t0I3$064W3)0,180?0j5w454k0G3l5Q503Q0j525456585V4A1|5t0x5%3Y525,3)5t0M0C3$0n5^5k5E51042X1c0W0^0F5q5{135n045p4O5`5R2q5z5B5@5_5r4k5M040G1)5i696h3g5.6o6401660-636b1|6d4f5C396a5W6u5o686D6p6z5A046C4`6t5t5?4V5_6U6E5(3Q6r6J6t660U0U6I3p6W3D6A4g6f6V6+3)0o185~0i600q626s6y65180*6)3A6;466-6/746i6@0@0i0#0o6x6F6?5}1E6_615I5K4d185b5d0#5f5h0w7f6X6G677w6,6M4o397n79040j3+7A6=6Z6*6K655T04307K4d0Q6@2k0T7v5D6~015*5/757C7(4k5t0(7T5y7C0V7=7+5F185=777O3E7p5c0F5e5g6n6!7#660L722%786q047e6T6g6t7h1c1Z2k6|846F66883I7|7h5355572P7@5)185+7!7g7~7r7t836P7#5;7{8g5Z8u585a7 817u8x6 040!8T7}040q0Z0Z2u0S8X7%8B7x8h0i8j0o8l8H6F8J4V1G4}4^4$8{0U4)1G0F4+902-2)27292+0q1@8}4)1M4 7x2X0v8P0,0w0f0K0e181y1A1C1E0n6S3b1T3q1N0l0R0H0(0n1p0n8!8$7u0n0 0n7I0o2Z0H9E4|4/8c5!8v1F0U8`3I1c0#0n0i1q320v0Q2X9L8Q7s5g0n1C0H0n1E0F5`2,1p0T042,0h0|0T0#2k8(1H9{0o9}8W9w1a0K0u0n0H0S130k572Q1p0%0w0j2s0R5c2H0Bak9P1qaoaqas050q3D0K0w0q0?0#2?5M0n0K2X0j1303aj0#al0oanap0Har0R2x0n150F1^130y571f319_aJ180c0a1G0q2(ad3q2{aD1.201/2y7#2D2u2w182J0s0R7s0Z9_0y0m2e1p4{4@9e3a4`9Y7|6j5O8X7Q5k8+3Y5Y9T8P2Z0w7c594U3b6Q8z8X8s8)7_9u4q6U8r7a5 7l6}8n5o7/6c6M6O4ybL6t6j6l2tbT5|8d8m7x6vb%136AbB7N6#6Hb-016AbW2%7|6R77bY7#bGbQb+186%8p8a6L18b:bX6:c76Y7ibO6{b@6671b@768e5^bm7a0F7cb)b;c0bN7kch4V7F8b8t5#2Pbw809/8Sc23D8ob@5t5vbs3)b_bH045Hczcp7H7JcJ7L8cci7Q7ScZ7U7Wa87ZbC8IbEcP7)4LcS7.c)7:4L7=b`9e3D5;bJcbco8L8Z8#3+8;737|cLc_cB547q0FbyaS0fcab{bD048Ac.8Cc#c;7,7_8Kcv048i0k8kcibSdcb(9U8Odf8R8G3Ab|18cOdp8,7MdKb=040%8XcmdOc 18cUb*cK70b@7h9Gd7dvdqcC9VcFdIc-8=c38VbF189G8%cSdod?5-dx8.dz8:cS0M3:9X9S8|2(9c1R040D0@dg0naRaT0n5~0d1z9a0n0QaF0i4.0i0Z0n0X9JaC360;0R0;0?8:1_0Cez0n1Yap0;2X9N1_1f0Edh1_9^9;1D9J009E2,0qdz0`1^0n9!9J1_dfdh9@9_321qe)9)9+e-9.7t0n0x9=9J8.0n8$1n0n0r2,1_9 a1a30o0Se6abed9z9B9D1q0T0q0T2@e*eN5f0ien2G8:9@axaWaY2R0;0na20$aZexeJ0^e(1_0#eE8.eh0S0if21g1t0hf7eK1pa.1_4.0t9_2Ue#2R1z2u9_eV2j9#4.0o0d0;9rfv0Z1m0|5b0H9aaa1W4(0@0_0{04.
Indice 1
Une solution simple à ce problème consiste à écrire une fonction qui renvoie le nombre de zéros consécutifs qui terminent un entier.
Attention : cette version est simple mais peu efficace.
Indice 2
Pour une solution efficace, on cherchera à calculer l'augmentation du nombre de zéros, d'un nombre factorielle à un autre, en fonction du nouveau facteur.
Il s'agit du nombre de fois que l'on peut diviser par 5 ce nouveau facteur.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)