Crible d'Eratosthène

Un nombre premier est un nombre entier naturel qui admet exactement deux diviseurs distincts entiers et positifs : 1 et lui-même.

Le crible d’Ératosthène permet de déterminer les nombres premiers plus petit qu’un certain nombre n fixé.

On considère pour cela un tableau tab de nbooléens, initialement tous égaux à True, sauf tab[0] et tab[1] qui valent False, 0 et 1 n’étant pas des nombres premiers.

On parcourt alors ce tableau de gauche à droite.

Pour chaque indice i :

  • si tab[i] vaut True : le nombre i est premier et on donne la valeur False à toutes les cases du tableau dont l’indice est un multiple de i, à partir de 2*i (c’est-à-dire 2*i, 3*i ...).

  • si tab[i] vaut False : le nombre i n’est pas premier et on n’effectue aucun changement sur le tableau.

On dispose de la fonction crible, incomplète et donnée ci-dessous, prenant en paramètre un entier n strictement positif et renvoyant un tableau contenant tous les nombres premiers plus petits que n.

Sieve of Eratosthenes animation.gif
By CC BY-SA 3.0, Link

Auteur SKopp sur Wikipedia allemand

Compléter la fonction crible

###(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 : 5/5

.128013r5aS*e )FsP4_k,(o8.-9myibw26u]:R1+d70vl;3t[pqfcTng=/h050J0g0Q0d0y0N0k0h0V0N0d0k0k0Z010Q0y0S010406050k0D0w0w0d0b0x040e0r0N0D0_0r0X0h020d0w0S0O0h0G0g130b0T0D0g0k050!101214160~0S04051B1u1E0!1B0~0J0y0M0.0:0=0@0:0X0Y0D0d0Y0g0u0S0x0Q0#1d0h0#0y0Y0#0N1*0#0Q0|050)0z0N0g1N0;0?011)1+1-1+0Q1?1^1;0Q0b1C1#0.190k0S0d0X0@0B011`1P010U0+0g0X1h0g1;2c2e2j1|2m1^2p0w2r040a0h0l0b0r0S0r0k0y1c1e0%2a0b0b0g0V2M1u2t0X1C0!1#2Y2628271=0J2v1Q0y0X2o2J1;1K1M0/1{2,2.0X0r2=1;0S2R1C2W2Y320 2d1e2@2k2{0b130N1;0d1(2R0U0@030n0n0V2|0g1-2`0r0u0L0u0H0|0h0H1u0d33360}352u381|3a3c3e3g0g3i013k3m3o3q2/3t0u2h040h0B3A3C2e3E2W2+013J0d3d1C3f0#3h3j3l3n0%3T2{3V0P3x0P3#2V3D0~3)3H0@3,3.053:3=3P3@3S2-3U3u0m3x0m401v423F371O3I0r3b3-3L3;3N3?3R3_4f3{3u0c3x0c4l3243363*474v4b3Q3^3p4B3s3u0C3x0C4H4n444q464s3K3/3M3O4P4e3r3V0K3x0K4Y3%4J3G4#3+4%4u4)4w4+4d4A4.3u0s3x0s4?2X4^4p2^4{4t484a4x4c4z4R530u0v3x0v583(4K455d4(494*4y4Q3`4T3v0L0|0H0L5q5a4L4|5f5x5i5z4S3V0H3w045R5H4o5J5e4N5h4,524g3v3X0H3!0!3B414@5W5t4M4~4O515k5%0H3}5T3 5,3$595:4`5=5w4 5y4-5`4i5T4k5 5.2X1F301u2=2#0J282*5t4Q2;1L1C2 0g313D6e1C4Q6v2u0y0J0@3l2W5Q3L6C6E5j5A6H0h2z0g6K5O5l5S404!5c0o0|0%0U6x625c0A3x6$6W390U0|0V0b0y1@0g6+5s4`0{040q6^4_5c0X0|0X6~5b2k6{0i0F6x0~4m3%5W6J016F363V3X5w7f5^6M3u2h6O2q6R684C3W1;6d6,1|6)3Y0h7D743*0k0J0|021q0r0Q0O7K0D7M7O7L7N1m0X0M0r0y1_0D1e230g0d0D2a0X0Q2o2e0Q0h0Q0r0D0-1^0-2{0w0z2R0-6t0w7Z0b1t7c61856A1e7m0n6G3u5|7l6D7g6L5P8d2i6P7t5$7v8e7y6_5c7H3x7D0h0S1a7 0(2L0-1q1_0X0t7P7R8I7N8K0O7a7F8a8c0u6a8f8n5_7v4i7r2A8V7o8S7x3B8w0h6%390|808284328+7z0@0r0|0Z6x8?8s760|0R0E8O877e8g7h2e3V4E4)8a6S5%4E8Z6Q8h9d7v9a3#8*8,3I0|1?8|9o8^8`9s8@016{0R7F5t0o0V0|0W0b1r9B6`0|92878}6 2k8_040f9w8~9p0473877b343)8Q7i4U6I968i5l4V9g8#8j0u4V2Y8)8w9t3+9q0d0z9J5c9z9 2k810|5G949x6{0E0p9U9P9W9ra79V0@a1agad0@a45Ta21|a9ac751|9R8{9N9`9D0|0j3-0k6@akatai0|abax9xaz04aB0,aE4I8P9+8R4:9b9+9j5B4:9/9i7uaZ8(7C7EaL0|0U4sas4L0|0ya:5t0r7B2-a@630z0|0b2e1WapaH6|b39{9Xb677799ZaS6K8R55aW9:5l55a#7n9;bg9m8*9_a,040y6#aKahb7af9#bxajbAalb7a?aF3*a9bbaRbH9%983u5nbha$8o5B5nbl9,5%bQbpbqbq9`71048/0g83b69R0tb6b(0d0S0S2o0Jb90|6}bH5;a=b`040i93bD89aT9(5C9*bi5`5DbWaY5Q5D9@a*b#brbxb(0w0D0N0_8yaQ3D9OaG01ava|5can5+c43*9R9Tb}63b 9N9!6w9$c6bO3v6U3f9ca%5Q3wcdcT3u5Ra)cjb$bs0A1)1^cy8-04cncp0`c*bwbE9R02cp8Nc=cvb(9YcC5t6{bK4nbMcN0X5Q7kcRaXcX5(8l7sbS8W5B5*c!c#cjb%9|9~cGa090b:0|c.cqc;c 9K049M8=9`cxc{3*aMaOaD8|cK7dcMbec75{c9df8$dPcWbT5Q8q9^dkc$cldtcodvcs3%cucD9vdEb~c-d%c:d)2Xd+a^0|0Ic+9WbG8=dK6fdM8h8R0H8Td9ca7ve5dd8!dR9;each9nbs2R0Q0D0bc~ctdmb)2R81b+8;d3340!6z6g6u6i6r1u0Q6leD2(2Z9}1^2Y6j1A883*er0n0U0d0o0g0n0#5|1m1o8E0-d27d1H3E1B0l0;0h2Oer148E1F3E0!0%0)0+0k04.