Nombre de zéros de n factoriel ; n grand⚓︎
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\).
- \(0! = 1\), comme 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.
Construire une fonction, tel que nb_zeros_factorielle(n)
renvoie le nombre de zéros se trouvant à la droite dans l'écriture décimale de \(n!\), pour \(n\) entier inférieur à \(10^{18}\).
Exemples
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
.128013="I_e+y3qCdRuéàxgPvr08-èzê*}fLbco/m]h({apl)7,'[n sS:j6w
1ki.!^9\Ot25;4A030f090+0I0#0K0S0R0A0K0I0S0S05060+0#0J06020Y030S0h0D0D0I0o0b020T0B0K0h140B0Q0R000I0D0J0.0R0g091e0o0d0h090S030C1b1d1f1h190J02031M1F1P0C1M190f0#0n0|0~10120~0Q0l0h0I0l090r0J0b0+0F1o0R0F0#0l0F0K1@0F0+17030@0z0K091Y0 11061?1^1`1^0+20221~0+0o1N1/0|1k0S0J0I0Q120,06241!060x0_090Q1s091~2m2o2t262w222z0D2B02040R0m0o0B0J0B0S0#1n1p0=2k0o0o090A2W1F2D0Q1N0C1/2+2g2i2h1 0f2F1#0#0Q2y2T1~1V1X0}252^2`0Q0B2~1~0J2#1N2)2+3b1a2n1p302u340o1e0K1~0I1=2#0x120108080A35091`330B0r0Z3C170Z1F0I3c3f183e2E3h263j3l3n3p093r063t3v3x3z2{3C0r2r020,3H3J2o3L2)2@063Q0I3m1N3o0F3q3s3u3w0=3!343$0c170c3*2(3K193.3O123;3?033^3`3W3|3Z2_3#3D0/170/451G473M3g1Z3P0B3k3=3S3_3U3{3Y3~4k403D0-170-4q3b483f3/4c4A4g3X3}3y4G3B3D0W170W4M4s494v4b4x3R3@3T3V4U4j3A3$0M170M4%3,1Q391F2~2.0f2i2?4a064V2}1W1N38093a3K464{4V5c2E0#0f123u2)3$0Z3S5j5l4E4W4=3D5p0R2J095s4V3 4Y3E2+3I4t3/0!170=0x5e2*0R5I540Q0x170Q0z080t092Q0S080x0I2%4x0#3y225O5h4u310616020G5.5R4)3:5V5_4(5;5?0L0U5.194r4{3.5r065m3f3$3'4e0R694i4F5v3%2s5z5B4;4l6l5G020R6u5Q5 3i172#1b0K0@0+5.6w4P540B17056F5`5;0D0#170p645~4P6h085n3D424-6W5C4X416m2A6o6j6q6!3*6v6G3N5{0Q170J0h0#10084L665P6N2u6J026L6 6t71266P4K6T765I6W6Y0r4n6#5k6a5t5D3$4n5y6*7l6%6k7i6/6v78125K020X1?5-766;5:6y026_6{5$6~3b7G3/73006C0.757O7y5|020Q6U6=60176376653d687k6b2o3$4J7j6+5u6q4J7q2K7?7n4I1~0C3I6:6:7X6@026A0h6C0I6E7F7X730a7V3K7P5S5}8c6x26730C0C6M8m4b6^6`6|7N4s7d7,5s7g4!7=7s6p4H0r4!7`5A8F6,8H8D7w828i6?8u7L6}8r6H5{730v8g3,8S6O6Q028x3,7*5d8A7l7g4@8E6i7@8H4@8K7|6'3D8=8Q8'2u7A2#0+0h0o7!8l8Y5;8587898b4N5_0C5g4|5b4~581F0+519o2;2,0I219l0C4 1L5/3/2#0D5%0I0!09080F6!1x1z1B1D0R7(3d1S3L1M0e0?0+230D0i1/3x0R0S230l0i0Q0i0o3=6{232S960R0f9!5!6P2`0o0R0~0R0n3=1(2W91261f2V0F1e9X0k170)0G0J0)0L5.0r0I1V9N9?0O0h1p2y145!a412a61/a909ab02ad0Qag5.0$1Q9T1i0#au06awa88aazac0GaDah7F1D0+0Rap0Rar5+9|2z952#0K0Na!aX7XaNayaAadafaU7OaZ340D0z2#0R5a6P5!a+9~0x4+88232Y0y091*0Q0fa}0f1o2`9}0Oaz2S0S2oaX2Ya.0oa7a:aRa?6F0f2o0{9~9@3w1t2T2V0#1;2y0R5'2%099=a a$9?23bqbsaPa;aS0%aE76aG9S1U1W3/a/bUac0P0n080JbW0L0R050R0)1H080H0!050Z0w0'0H0)2_0x0+0b0wb?0K0x0K0B4xb?0x9-0A0H0Q0w0H0J0'0!c60)0oc9cb9|b=0)c8cacc0)ce5(chcj0Jcocqcx9|0ac7crcycAcgcick0'0,cFcLcIcKcHcdcfcCcQ0ccTcXcJ0)0Abf0+0S0)0E9m0n3L883L1`020y3o0S0B1d230S0O1f0o0u9X0R1v0+0B0hbz9O9X3k9Oc|0QaX0Q880{0ja~1f149|0fao3g5!0@2_0R9-1%b!c^19c^bSaxb)aB0GcvcUcYcB0Icj0zc%csbY7OaW9}3o2n0oasa!dh0#0sbebR8saMbrdFaaaR0IdS8h2~6{0idn9|dEaOd-dH0zd:3,0$0R0:0n2$2O1.1:0Qa+1;0JbMaX2U1t222KdhbJ0^a}035g3o8p0R0z1F5gdA0#3L0Cc?9z9VbAbg23ap23b40Q2%bG1p0me71oaHb$2 5{1$1'1)1+1-9#1p281_1{1}9A542H2y2A17eMeY5_5a5/3+2*en3x9A7f6c0,5F6f6$8G3Be|5x6n8M8^f13E4.4D7t3#f27 5Hd)7A5M8X7$3i5U02a01l8aeK7#7H265?5^8z9a7I987+fyfu170Nfjft8t7Jfs3/619Q8yfB5i7-6Xe{6re~fRfb40e|2r8{f57nfZ2s4B4/8@f%fU80e'5{0X1783fxfk260S0f17001B0B0+0.f}0hf g1f~g01x0Q0n0B5+dV9 a1fqebajal1CbQ5y0%7cfP1pe`7/e|6.3oe 8Nf742f#f+6'gtf(4TgB4=gD6s7Xf`f=6v0r5ya!0SaXaZa#ata'963ygo8.6VfR5ne|7vgvfWf03%7h6)7{f$gCg-f94h7mg;7vf.gKf{6tgNa~gQgS1pa`a|9:9Ca$gZ67g#8BfT7;fV8|gH0r7_f4gGfchigE4Cg@fXf7heg{d)gLg~6ug2g4hzg0hB0.h9e?8/7.0Qg,8Pg)hghm8Jhkg^hh8Jf)fag+e|8Pf.83d)9c1D886DfG7Q6Kh)547a026S7)fKgrhJe|8 hMg:hh8`hQhrg,8`hUhqhW0r8 hZ7xh#8U6|0Jh,8Zh+99f^fIich;f@gqg$fT0q5qg*gxg,ipgAhRhmiui24:ise|ip6sh!fC7z177C2xid9bia5$ij7Wd)7R7T8$70i97ZfK545?fN8,h=ings0r0(iqhNfYi)g.8Lhli-i*g?iAf6g,i*iE8RaLh$6Bh(igfH068eiU77iWfA8h8d178piL7I7KibhFe_i'h@3C0pi+h{hm0Zjnivh f2jsizi;f7jrfehx8284iNb-je8n178#jHiiji7ejkg,0Z5p8?iwi-jRi/i,jz5xjxjUjZjBiFih06930?96j98%jE86h%9ejN9ie^9k2+9y1O020*1pec1m9%c 5!0n0#dq230A9WeG1oeJebd99|0B0z9X0Qk7gdbBc}blbF1;bC0J0K0sd5bIbK9X960{bO5!0{bpd)b(d|aCbXa@3Ka+1e6{0R0Ida2Ugl3w3U2w0A5+dh0{0z2_c}0#kS0k0R1BaK9'0|3=0Ab6ej0Ie40AbQ0{kz5*5,1Db!1Tj}070Kek0hbd3o0Vdad5k^gb9|eF9}6{d52Yh46Aa~h7kE0$lq0R0ebjgR0Rd80h0Vkg0{2g0s0{1m2xl1ex0=dv0`02.
Indice 1
- Il n'est pas possible de construire un tableau de tous les résultats.
- Il faut penser décomposition en facteurs premiers de \(n!\).
- Une divisibilité par \(10\) signifie la présence de \(2\) et \(5\) dans la décomposition.
- Le nombre de zéros d'un nombre est le minimum de l'exposant de 2 et de celui de 5 dans la décomposition en facteurs premiers du nombre.
- Pour \(n!\), le nombre de zéros est l'exposant de 5 qui est plus petit que l'exposant de 2.
Indice 2
- Combien y a-t-il de multiples de 5 de \(1\) à \(n\) ? Chacun apporte un zéro.
- Combien y a-t-il de multiples de 25 de \(1\) à \(n\) ? Chacun apporte un zéro supplémentaire.
- Combien y a-t-il de multiples de 125 de \(1\) à \(n\) ? Chacun apporte un zéro supplémentaire.
- Quand faut-il arrêter cette liste ? Et comment la générer ?
Indice 3
- On utilisera une variable
puiss_5
qui sera une puissance de 5. - La puissance suivante s'obtient avec
puiss_5 *= 5
. - Il y a
n // k
multiples de \(k\) de \(1\) à \(n\), par exemple :- Il y a
42 // 5 = 8
multiples de 5 de \(1\) à \(42\) : \(5\), \(10\), \(15\), \(20\), \(25\), \(30\), \(35\) et \(40\). - Il y a
42 // 25 = 1
multiple de 25 de \(1\) à \(42\) : \(25\). - Il y a
42 // 125 = 0
multiple de 125 de \(1\) à \(42\).
- Il y a
- Il y a \(8+1+0=9\) zéros à la fin de \(42!\)
# Tests
(insensible à la casse)(Ctrl+I)