Aller au contenu

Nombre de zéros de n! (force brute)

Le cadre

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 (c'est un produit vide).
  • \(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.

On pourra vérifier que 1000! se termine par 249 zéros.

Exercice

Coder une fonction nb_zéros qui prend un entier naturel non nul, et qui renvoie le nombre de zéros consécutifs à la droite de son écriture décimale.

Coder une fonction nb_zéros_factorielles qui prend un entier naturel n en paramètre et qui renvoie un tableau de longueur n + 1 qui indique pour chaque indice \(i\) le nombre de zéros consécutifs à la droite de l'écriture décimale de \(i!\) (la factorielle de \(i\)).

👍 On garantit que n < 1050, ce qui autorise un algorithme par force brute de finir en temps raisonnable.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : /
.128077.128013x/.r;nbOylae%u)*dV6z3Am(P+02-@],59fq78 _o=pcwgv41kRIéhtsSàLC[ji:050s0n0(0m0:0l0)0O0T0l0m0)0)0R010(0:0S010406050)0p0y0y0m0f0k040*0Q0l0p150Q0h0O020m0y0S0g0O0!0n1f0f0L0p0n0)050d1c1e1g1i1a0S04051N1G1Q0d1N1a0s0:0W0}0 11130%0:0V0%0l1(0%0(18050^0i0l0n1Z1012011%1)1+1)0(1;1?1/0(0f1O0(0%1^1#010K0`0n0h1t0n010}1l0)0S0m0h130D1/2l2n291`2c1?2f0y2h040b0O0A0f0Q0S0Q0)0:1o1q0?2j0f0f0n0T2L1G2s0h1O0d272X2426251:0s2u131+0h2e2I1/1W1Y0~1_2+0:2-0h0Q2;1/0S2Q1O2V2X321b2m1q2?2a2{0f1f0l180O0Y2U3619352t381`3a3c3e0D3h2n3j2V2*013o0m3d040O0w3s2W1a3v3m133y3A0O0X3E3u363w3K3e0I3O3G3Q3I3x0Q3b3z3e0u3V3k371!3n3!3p3B0M3)3H3,3J3.3$3B0N3=3X3@3Z3#3L0J3}3l3 3S040Y0C443+2@403/0Y3g1H3i3W454d470Y3r4i3t4k4c393_3A0Y3D4q3F3*3R4v180Y3N4z3P4l4u414E3U4H4s4C4L483(4H1R301G2;2!0s262)3Y0T2|2A0=1X1O2 0n313i3O054(0?4:4J1`0Z180?0K4=3?4d0U3e503~4m0K180h0i0P0v0$2F1F4U512a17040z554`3J595n4t1`5k0q0;3V0O5y0O4B3Y0)2q04011y0h0W0Q0:1@1?0O2{0y0i2Q0O2N5d5f2j0h0)0$0T1n0:0K0|0+0O0 5T2F2K1@2N0h015x5z5B46180v3O5A5i1`0Q180R5}5_4d0y0:184a4O5z5~562a4|040U1%1?645 5p040h6l6e60180o6q5o01674E6a326d6w61040R634H6C5s136y046A4;6m015k5w6b6c5^6Q5=6o6v6K016E6H6B65395q6I6*6s040d0d6!3w6M495@6V6J3R5{6?3Y6%6 5`045|6-6Q6E0B726668486`6|3Y6g2Q0(0p0f6p766r6n7532064P7g4}0n4 5h7o01533B5r3R586o5b5V2I0P0K0m2S3!5L0l1?5g346Q5k5m7y6w6Y7m7T7z5u6T7r6c6.135D185G2e5J5L5+0m5+0:0)0(5:1E5O7H5e2I5T1@7L7N0f7P5N0:0H0O2H7k0O0C1r0l0(0g0R0O0:8g8i8k5=7e7+3x181+7`0n7a2a717n6w5k0.7D3Y6M6O3t8s5k0G8r6X180K0P0:8y6/6(3i7f3 6^8N7z6g0K3!8T6n8S8B6#0Q7B2_8)3x0i180f2n0V8x7X6#7V8F8Y7c4h7#8C180H8;7Z8;788;8Z8|3w7%7e7*8O048Q8+6)7762978P8R99180r9p049l4j6{5y8s6Y8v7{8 4d6E0e9F6+040m0S0S2e0s9J5t187W936#7Z7 5f9R138~9d3Y6Y9k9!6R180q0q8!6w7h0@7k7!8W9B8u7_9E4O1G4@4/4Va10d4Y1G0(4!a62%2Y0m1=a34Y1M4_6#2Q0y7K0m0Z0n0P0%0w181y1A1C7}7(4;1T3j2;3w0m0s0y1p2K0:1p0O155k1MaCaEaG2L0E150(22040x0W2R0O2G5e0m7{8d2e0E0S0 0T8{1U4+2=3 1|1*1,1.ah3w2w2e2g182C0*0T860S0(2D0k271p4=4.ah334;a0a{7u044~9+7B5A9%467F5a5c807S6P7$9T9+98bo4d9f6U9A6Q7-5F5H7;5M1@5P5R7|0O7I0|4(5Y5!5$5(0O5*5,0s5.7{825O5?bD8X4m6~8,3w8A9m7z8H9:6#6g6i2d9v9^3tb+8z6t9b918I2Wb 8U8Vb~8sb?bA5j18ax4r9zc66nb}c58s6E6;c8cl6Q6^c419ch9`749s040Bcp7Ccr91b@3w9=7j7l9v7q4j7t3 6gbkcc1`bmbybq9Y7J840(7O0n7Q1E9+9$9V6}6ZcR9#9-cf3F9h7zbG7/5I5K5M7@9D7|0|brbQb%cYc!c$8l8a8c0f8e8n8j8ldb8pb)7)6W7z9C9|8{b;6D9ob.3Y8D9+cbc*dr188Mb*cw9*dq3 b:9_cD4EcFbi8%0f9v9xc9778/ckcCdj8?048^0h8`c(bxc-6xcEd#5k96dCb,c,dn8-1879d+2a9cdv3 bCdh6{dA9rd=6/0rcBci8t9w9gdi7Y9{8w9+9Hby189M9O0h9Qd(d!d^d,d0btdZ5led9jd~elcd049.dIcO8@9?cJd 6nc}3)0dbga22Xaf4X4,1V1XaOaF0haHaJ0s8_0n0f18aN3YaDeReT0haS2KaV0t1g0:2nb$a,0p0|8^0S0:0?1R3j1N0,7@8%0h2SaI1q2 2G2I0$1@d85Abgen9ZeH4)3B7L2K820p0c5T1X7_f40|2md9cZ1nb%0i0Q0p0~0n0e060t0Q0k1pbR0Q1e2eb60h002e0Ofj5S1C000p2-0O0)0n0p5N0maY0T7?fR1pf3aJ4?fh2;aFeibg0O1C8m2Qc_7=5N1C0Q15fM5~241p0V040@2Ug4dX3B5N2Q8wb%bZfp2JeU7}fZ0|1g0V1dfM0)9IazeOa=4da@1~1-2r7za}2y2Ab1b316b60Ab80%ba4Ubc3*be8JeI6QcP7wbl54d#0hcVbsffeu9SeqgZ6,g(c.ewc:cue76#0T0Y18035OaJ0W3zac5Nfb1q8kct06c=e8cxeD6$dpd.6@7ch4h69WeAeah9dEdOb=heey4db_6jdmdFdjhi9}hc7062e2cahoej04g:h59zcwdR8K959vgehxhudo6F97dUf;2|ep9Ubvh7hK7UhMh9csep9/b*hgc+cLhmhRcAc2dHdzgUeAcIdRe36Yh/cq7z6E0Eh?7d9~fg4^eJeM0W3jf#3j1+040j37fKb51@4(5Q5L2M5:gif45X0s0p7_g25*fW0OhObLaJ0hf#gtif1aif0#0l0O0k0OfQ7@iz2Ne=0|av5+iC5Q5S5U80iG0:iei%0!0_0)aJfb0 avd5aJf{bJfcfh0v0O0E3f9 fh1GiH1Gidag050:0y0V0O3z0(130a2i3Y0(0U1z0Q0/68fY0f0T1$200S0)0;6;0T0s0h0e0/0)0?1+0W0f0e2-0(0d1)0d0/0?0Tan0s2YjhaFjk0F0Y0I0e0Y0e0C0d1_0@0)1H0W0V0d0Y0K0X0X0s0e0)j*2iaT1?130;0B0Y0;010d3B0-0@b$f1f-1q1Eb61C10j6g20?fmf+7_8b1me@9Me`1@1cd92N0VdW0sc fKbNgse|1aa4eN4X0@0_0{04.