Pagini recente » Cod sursa (job #134387) | Cod sursa (job #2857720) | Cod sursa (job #1426832) | Cod sursa (job #1053050) | Cod sursa (job #1236685)
//O prima idee de optimizare ar fi sa nu mai luam in calcul numerele pare pentru
// ca stim ca singurul numar prim par e 2. Deci sa vedem noua varianta a programului:
#include <fstream>
using namespace std;
//class PrimeNumbersSieve1
bool p[1000001]; int n;
//p[i] == 0 if i is prime
int ciur(int n)
{
int i, j, nr;
nr=1;
for (i = 3; i <= n; i=i+2)
{
if (p[i] == 0)
{
nr++;
for (j = i * i; j <= n; j = j+ i)
// e optimizat pt ca nu e de la i+i daca se iau exeple se va vedea ca pt 5
//10 a fost marcat de 2 , iar 15 de 3, iar 20 de 2
{
p[j] = 1;
}
}
}
return nr;
}
int main()
{
ifstream f("ciur.in");
ofstream g("ciur.out");
f>>n;
g<<ciur(n);
g.close();
f.close();
return 0;
}