Garbell d'Eratòstenes. X54043


Statement
 

pdf   zip   main.R

Feu la funció eratostenes (N) tal que, donat un enter N, retorni un vector amb tots els nombres primers fins a N segons l’algoritme del Garbell d’Eratòstenes.

Aquesta tècnica és molt simple, i consisteix en posar tots els números de 2 fins a NN i anar marcant els que no són primers de la següent manera:

  1. Marquem tots els elements com a primers.

  2. Anem al primer número marcat. Sigui pp aquest número.

  3. Anem saltant de pp en pp elements i anem desmarcant els elements a la p-èssima posició com a divisibles (no-primers).

  4. Ho fem mentre hi hagi números per desmarcar.

Per exemple, si N=10, tindríem primer:

2 3 4 5 6 7 8 9 10
T T T T T T T T T

Ara busquem el primer element marcat de la llista. En aquest cas és el 2. Ara anem saltant de 2 en 2 i desmarquem es elements per on passem:

2 3 4 5 6 7 8 9 10
T T T T T

Ara anem al següent element marcat, en aquest cas el 3, i fem la mateixa operació:

2 3 4 5 6 7 8 9 10
T T T T

En aquest cas només hem desmarcat el 9, ja que el 6 l’havíem desmarcat abans, ja que és múltiple de 2. Ara anem al següent element marcat, en aquest cas és el 5:

2 3 4 5 6 7 8 9 10
T T T T

Aquí ja podem parar, ja que si anem al següent element marcat (el 7), quan saltem de 7 en 7 ja sortirem del vector. Per tant, ara la funció ha de tornar un vector amb els elements marcats. En aquest cas, el vector ha de contenir 2,3,5,72,3,5, 7.

Entrada

Un enter N.

Sortida

Un vector amb els nombres primers fins a N, calculats amb l’algoritme del garbell d’Eratòstenes.

Public test cases
  • Input

    5
    

    Output

    2 3 5 
    
  • Input

    100
    

    Output

    2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 
    
  • Information
    Author
    Jaume Baixeries
    Language
    Catalan
    Official solutions
    R
    User solutions
    R