Pagini recente » Cod sursa (job #2662633) | Cod sursa (job #439213) | Cod sursa (job #2140021) | Cod sursa (job #2170521) | Cod sursa (job #641201)
Cod sursa(job #641201)
#include<stdio.h>
#include<unistd.h>
#include<math.h>
#include<string.h>
int vect[2000001];
int is_prime(int n){
long i;
int c = 0;
if (n == 1 || n == 4 || n == 6)
return 0;
if (n == 2 || n == 3 || n == 5)
return 1;
if (n%2 == 0)
return 0;
long q=sqrt((long ) n);
for(i = 3; i <= q; i+=2){
if(n%i == 0)
return 0;
}
return 1;
}
int easy_sol(int N){
int i, c = 0;
for (i = 2; i < N ; i++){
if (is_prime(i))
c++;
}
return c;
}
int eratostene(int N) {
int cur_pos = 2, count = 0;
int i;
while(cur_pos <= N) {
count++;
for ( i = cur_pos*2; i <= N; i+=cur_pos){
vect[i] = 0;
}
cur_pos++;
while( vect[cur_pos] == 0 && cur_pos <=N){
cur_pos++;
}
}
return count;
}
int main(){
int N, M;
FILE* fin = fopen("ciur.in","r");
FILE* fout = fopen("ciur.out", "w");
fscanf(fin, "%d", &N);
//printf("N = %d\n ", N);
//M = easy_sol(N);
memset(vect, 1, (N+1)*sizeof(int));
M = eratostene(N);
//printf("M = %d\n", M);
fprintf(fout,"%d", M);
fclose(fin);
fclose(fout);
return 0;
}