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

.128013w]itkc[v8o-)ylqb0p_.P3(a;+g=R/mT4r*se97Sf,d 612:F5nuh050R0L0e0y0d0o0K0S0g0o0y0K0K0C010e0d0s010406050K0!0F0F0y0I0n040O0k0o0!0_0k0Z0S020y0F0s0z0S0D0L130I0p0!0L0K050E101214160~0s04051B1u1E0E1B0~0R0d0i0.0:0=0@0:0Z0B0!0y0B0L0l0s0n0e0#1d0S0#0d0B0#0o1*0#0e0|050)0q0o0L1N0;0?011)1+1-1+0e1?1^1;0e0I1C1#0.190K0s0y0Z0@0V011`1P010P0+0L0Z1h0L1;2c2e2j1|2m1^2p0F2r040a0S0v0I0k0s0k0K0d1c1e0%2a0I0I0L0g2M1u2t0Z1C0E1#2Y2628271=0R2v1Q0d0Z2o2J1;1K1M0/1{2,2.0Z0k2=1;0s2R1C2W2Y320 2d1e2@2k2{0I130o1;0y1(2R0P0@030t0t0g2|0L1-2`0k0l0r0l0U0|0S0U1u0y33360}352u381|3a3c3e3g0L3i013k3m3o3q2/3t0l2h040S0V3A3C2e3E2W2+013J0y3d1C3f0#3h3j3l3n0%3T2{3V0w3x0w3#2V3D0~3)3H0@3,3.053:3=3P3@3S2-3U3u0H3x0H401v423F371O3I0k3b3-3L3;3N3?3R3_4f3{3u0Y3x0Y4l3243363*474v4b3Q3^3p4B3s3u0T3x0T4H4n444q464s3K3/3M3O4P4e3r3V0N3x0N4Y3%4J3G4#3+4%4u4)4w4+4d4A4.3u0j3x0j4?2X4^4p2^4{4t484a4x4c4z4R530l0M3x0M583(4K455d4(494*4y4Q3`4T3v0r0|0U0r5q5a4L4|5f5x5i5z4S3V0U3w045R5H4o5J5e4N5h4,524g3v3X0U3!0E3B414@5W5t4M4~4O515k5%0U3}5T3 5,3$595:4`5=5w4 5y4-5`4i5T4k5 5.2X1F301u2=2#0R282*5t4Q2;1L1C2 0L313D6e1C4Q6v2u0d0R0@3l2W5Q3L6C6E5j5A6H0S2z0L6K5O5l5S404!5c0f0|0%0P6x625c0b3x6$6W390P0|0g0I0d1@0L6+5s4`0{040x6^4_5c0Z0|0Z6~5b2k6{0m0W6x0~4m3%5W6J016F363V3X5w7f5^6M3u2h6O2q6R684C3W1;6d6,1|6)3Y0S7D743*0K0R0|021q0k0e0z7K0!7M7O7L7N1m0Z0i0k0d1_0!1e230L0y0!2a0Z0e2o2e0e0S0e0k0!0-1^0-2{0F0q2R0-6t0F7Z0I1t7c61856A1e7m0t6G3u5|7l6D7g6L5P8d2i6P7t5$7v8e7y6_5c7H3x7D0S0s1a7 0(2L0-1q1_0Z0u7P7R8I7N8K0z7a7F8a8c0l6a8f8n5_7v4i7r2A8V7o8S7x3B8w0S6%390|808284328+7z0@0k0|0C6x8?8s760|0h0c8O877e8g7h2e3V4E4)8a6S5%4E8Z6Q8h9d7v9a3#8*8,3I0|1?8|9o8^8`9s8@016{0h7F5t0f0g0|0G0I1r9B6`0|92878}6 2k8_040J9w8~9p0473877b343)8Q7i4U6I968i5l4V9g8#8j0l4V2Y8)8w9t3+9q0y0q9J5c9z9 2k810|5G949x6{0c0Q9U9P9W9ra79V0@a1agad0@a45Ta21|a9ac751|9R8{9N9`9D0|0X3-0K6@akatai0|abax9xaz04aB0,aE4I8P9+8R4:9b9+9j5B4:9/9i7uaZ8(7C7EaL0|0P4sas4L0|0da:5t0k7B2-a@630q0|0I2e1WapaH6|b39{9Xb677799ZaS6K8R55aW9:5l55a#7n9;bg9m8*9_a,040d6#aKahb7af9#bxajbAalb7a?aF3*a9bbaRbH9%983u5nbha$8o5B5nbl9,5%bQbpbqbq9`71048/0L83b69R0ub6b(0y0s0s2o0Rb90|6}bH5;a=b`040m93bD89aT9(5C9*bi5`5DbWaY5Q5D9@a*b#brbxb(0F0!0o0_8yaQ3D9OaG01ava|5can5+c43*9R9Tb}63b 9N9!6w9$c6bO3v6U3f9ca%5Q3wcdcT3u5Ra)cjb$bs0b1)1^cy8-04cncp0`c*bwbE9R02cp8Nc=cvb(9YcC5t6{bK4nbMcN0Z5Q7kcRaXcX5(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|0Ac+9WbG8=dK6fdM8h8R0U8Td9ca7ve5dd8!dR9;each9nbs2R0e0!0Ic~ctdmb)2R81b+8;d3340E6z6g6u6i6r1u0e6leD2(2Z9}1^2Y6j1A883*er0t0P0y0f0L0t0#5|1m1o8E0-d27d1H3E1B0v0;0S2Oer148E1F3E0E0%0)0+0K04.