Pagini recente » Cod sursa (job #2048145) | Cod sursa (job #1637648) | Cod sursa (job #2842798) | Cod sursa (job #2880468) | Cod sursa (job #835238)
Cod sursa(job #835238)
/**
Voi defini sirul lui Eratostene ca fiind un vector cu n elemente.
2 3 4 ... n
Mod de gasire a nr prime:
- presupunem a fiecare nr este prim:
vect : 2 3 4 ... n
is_prime: 1 1 1 ... 1
- daca termenul i (i=1-n) este prim ,toti multiplii acelui numar SIGUR
nu sunt primi:
i=1;
vect : 2 3 4 5 6 7 8 ... n
1 1 0 1 0 1 0 ... 1
i=2;
vect : 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... n
1 1 0 1 0 1 0 0 0 1 0 1 0 0 ... 1
s.a.m.d
GOT SPEED ? determinare a tuturor nr prime < 2.000.000 in 0.078 secunde !!
*/
#include <string.h>
#include <stdio.h>
using namespace std;
char prime[2000001];
int n;
void scoate(int a)
{
int i;
for(i=2;i*a<=n;i++)
{
prime[i*a]='0';
}
}
int main()
{
FILE *f=fopen("ciur.in","r");
int oky=0;
fscanf(f,"%d",&n);
fclose(f);
f=fopen("ciur.out","w");
int i;
memset(&prime,'1',sizeof(prime));
for(i=2;i<=n;i++)
{
if(prime[i]=='1')
{scoate(i);
oky++;
}
}
fprintf(f,"%d",oky);
return 0;
}