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 N i anar marcant els que no són primers de la següent manera:
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, 7.
Observació
Només cal que enviïs el fitxer amb la funció (i les funcions auxiliars que hagis fet)
que et demanem i prou.
El fitxer main.R
et pot servir per a fer la teva solució, però no cal que n’enviïs
el contingut.
Entrada
Un enter N
.
Sortida
Un vector amb els nombres primers fins a N
,
calculats amb l’algoritme del garbell d’Eratòstenes.
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