Sunteți pe pagina 1din 1

Iar numerele nemarcate sunt numerele prime: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,

37, 41, 43, 47.

Implementarea ciurului lui Eratostene în C++


Pentru a implementa ciurul lui Eratostene în C++, ne vom folosi de un vector,
pe care îl vom numi intuitiv ciur. Lungimea vectorului trebuie să fie cel puțin
egală cu numărul
de numere pe care vrem să le verificăm: în exemplul anterior, am creat ciurul până
la n = 50,
așadar vectorul va avea minimum 50 de elemente.

Elementul ciur[i] din ciur va avea una din următoarele valori:

ciur[i] = 0, dacă numărul i este nemarcat (cu alte cuvinte este prim);
ciur[i] = 1, dacă numărul i este marcat (cu alte cuvinte nu este prim).
Inițial, toate elementele vectorului vor fi egale cu 0. Vom avansa începând de la 2
până la limita noastră n,
iar când găsim un număr nemarcat (prim), îi vom marca toți multiplii săi.

La final, putem afișa pe ecran numerele nemarcate, adică cele prime.


Putem de asemenea să ne întrebăm pentru orice număr dacă este sau nu prim, instant.

Pentru n=50 numerele nemarcate sunt numerele prime: 2, 3, 5, 7, 11, 13, 17, 19, 23,
29, 31, 37, 41, 43, 47.
#include <iostream>

using namespace std;

//Căutăm numerele prime până la 1000


int ciur[1001];

int main()
{
for(int i = 2; i <= 1000; i++)
{
//Am găsit un număr nemarcat (prim)
if(ciur[i] == 0)
{
//Marcăm multiplii lui i
for(int j = 2 * i; j <= 1000; j += i) {
ciur[j] = 1;
}
}
}

//Afișăm pe ecran toate numerele prime găsite


for(int i = 2; i <= 1000; i++)
{
if(ciur[i] == 0)
{
cout << "Numarul " << i << " este prim\n";
}
}
return 0;
}

S-ar putea să vă placă și