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

.128013e9_kySol2p]1*h=m0g4)ds8iq,RvnP +;/7(bfF6Tu.r:53[ac-wt050v0b0#0X0y0i0w0F0Y0i0X0w0w0p010#0y0k010406050w0Q0q0q0X0S0f040g0h0i0Q0_0h0D0F020X0q0k0H0F0B0b130S0z0Q0b0w050I101214160~0k04051B1u1E0I1B0~0v0y0C0.0:0=0@0:0D0s0Q0X0s0b0Z0k0f0#0o1d0F0o0y0s0o0i1*0o0#0|050)0L0i0b1N0;0?011)1+1-1+0#1?1^1;0#0S1C1#0.190w0k0X0D0@0j011`1P010M0+0b0D1h0b1;2c2e2j1|2m1^2p0q2r040a0F0E0S0h0k0h0w0y1c1e0%2a0S0S0b0Y2M1u2t0D1C0I1#2Y2628271=0v2v1Q0y0D2o2J1;1K1M0/1{2,2.0D0h2=1;0k2R1C2W2Y320 2d1e2@2k2{0S130i1;0X1(2R0M0@030d0d0Y2|0b1-2`0h0Z0r0Z0m0|0F0m1u0X33360}352u381|3a3c3e3g0b3i013k3m3o3q2/3t0Z2h040F0j3A3C2e3E2W2+013J0X3d1C3f0o3h3j3l3n0%3T2{3V0V3x0V3#2V3D0~3)3H0@3,3.053:3=3P3@3S2-3U3u0t3x0t401v423F371O3I0h3b3-3L3;3N3?3R3_4f3{3u0U3x0U4l3243363*474v4b3Q3^3p4B3s3u0O3x0O4H4n444q464s3K3/3M3O4P4e3r3V0J3x0J4Y3%4J3G4#3+4%4u4)4w4+4d4A4.3u0x3x0x4?2X4^4p2^4{4t484a4x4c4z4R530Z0c3x0c583(4K455d4(494*4y4Q3`4T3v0r0|0m0r5q5a4L4|5f5x5i5z4S3V0m3w045R5H4o5J5e4N5h4,524g3v3X0m3!0I3B414@5W5t4M4~4O515k5%0m3}5T3 5,3$595:4`5=5w4 5y4-5`4i5T4k5 5.2X1F301u2=2#0v282*5t4Q2;1L1C2 0b313D6e1C4Q6v2u0y0v0@3l2W5Q3L6C6E5j5A6H0F2z0b6K5O5l5S404!5c0e0|0%0M6x625c0!3x6$6W390M0|0Y0S0y1@0b6+5s4`0{040K6^4_5c0D0|0D6~5b2k6{0u0T6x0~4m3%5W6J016F363V3X5w7f5^6M3u2h6O2q6R684C3W1;6d6,1|6)3Y0F7D743*0w0v0|021q0h0#0H7K0Q7M7O7L7N1m0D0C0h0y1_0Q1e230b0X0Q2a0D0#2o2e0#0F0#0h0Q0-1^0-2{0q0L2R0-6t0q7Z0S1t7c61856A1e7m0d6G3u5|7l6D7g6L5P8d2i6P7t5$7v8e7y6_5c7H3x7D0F0k1a7 0(2L0-1q1_0D0R7P7R8I7N8K0H7a7F8a8c0Z6a8f8n5_7v4i7r2A8V7o8S7x3B8w0F6%390|808284328+7z0@0h0|0p6x8?8s760|0W0l8O877e8g7h2e3V4E4)8a6S5%4E8Z6Q8h9d7v9a3#8*8,3I0|1?8|9o8^8`9s8@016{0W7F5t0e0Y0|0P0S1r9B6`0|92878}6 2k8_040n9w8~9p0473877b343)8Q7i4U6I968i5l4V9g8#8j0Z4V2Y8)8w9t3+9q0X0L9J5c9z9 2k810|5G949x6{0l0A9U9P9W9ra79V0@a1agad0@a45Ta21|a9ac751|9R8{9N9`9D0|0N3-0w6@akatai0|abax9xaz04aB0,aE4I8P9+8R4:9b9+9j5B4:9/9i7uaZ8(7C7EaL0|0M4sas4L0|0ya:5t0h7B2-a@630L0|0S2e1WapaH6|b39{9Xb677799ZaS6K8R55aW9:5l55a#7n9;bg9m8*9_a,040y6#aKahb7af9#bxajbAalb7a?aF3*a9bbaRbH9%983u5nbha$8o5B5nbl9,5%bQbpbqbq9`71048/0b83b69R0Rb6b(0X0k0k2o0vb90|6}bH5;a=b`040u93bD89aT9(5C9*bi5`5DbWaY5Q5D9@a*b#brbxb(0q0Q0i0_8yaQ3D9OaG01ava|5can5+c43*9R9Tb}63b 9N9!6w9$c6bO3v6U3f9ca%5Q3wcdcT3u5Ra)cjb$bs0!1)1^cy8-04cncp0`c*bwbE9R02cp8Nc=cvb(9YcC5t6{bK4nbMcN0D5Q7kcRaXcX5(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|0Gc+9WbG8=dK6fdM8h8R0m8Td9ca7ve5dd8!dR9;each9nbs2R0#0Q0Sc~ctdmb)2R81b+8;d3340I6z6g6u6i6r1u0#6leD2(2Z9}1^2Y6j1A883*er0d0M0X0e0b0d0o5|1m1o8E0-d27d1H3E1B0E0;0F2Oer148E1F3E0I0%0)0+0w04.