Pagini recente » Cod sursa (job #411138) | Cod sursa (job #2970628) | Cod sursa (job #2649587) | Cod sursa (job #3207770) | Cod sursa (job #188362)
Cod sursa(job #188362)
#include <fstream>
using namespace std;
#define N 10000
int nrp[N], contor_numere_prime = 3, candidat = 6, n;
inline int prim(int x)
{
for(int i=0;i<contor_numere_prime;++i) if(x/nrp[i]*nrp[i]==x) return 0;
//toate numerele prime pe care le am in vector...
return 1; //daca nu am gasit nici unul care sa il divida pe x, e prim.
}
inline void pune(int x)
{
nrp[contor_numere_prime++] = x;
//retin pe x si cresc contorul.
}
int main()
{
/*
doresc sa gasesc numerele prime pana la n
voi verifica toate numerele de forma 6k+1 si 6k+5 (deoarece restul sigur nu sunt prime)
verificarea o voi face pe baza numerelor prime deja existente in vector.
*/
ifstream fi("ciur.in");
fi>>n;
fi.close();
nrp[0] = 2;
nrp[1] = 3;
nrp[2] = 5;
while(1)
{
if(candidat>n) break;
if(prim(candidat+1)) pune(candidat+1);
if(prim(candidat+5)) pune(candidat+5);
candidat += 6;
}
while(nrp[contor_numere_prime - 1] > n) contor_numere_prime--;
ofstream fo("ciur.out");
fo<<contor_numere_prime<<"\n";
fo.close();
return 0;
}