Cod sursa(job #1700282)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 9 mai 2016 22:54:34
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <cstdio>
using namespace std;
typedef long long i64;


bool c[2000005];


int main(void) {
    FILE *fi = fopen("ciur.in","r");
    FILE *fo = fopen("ciur.out","w");
    int n, ans;

    ans  = 0;
    c[0] = 1;
    c[1] = 1;

    fscanf(fi,"%d",&n);

    for(int i=4; i<=n; i+=2)
        c[i] = 1;
    for(int i=3; i*i<=n; i+=2) {
        if(c[i])
            continue;
        for(i64 j=i*i; j<=n; j+=i+i)
            c[j] = 1;
    }
    for(int i=2; i<=n; ++i)
        ans += int(!c[i]);

    fprintf(fo,"%d\n",ans);
    fclose(fi);
    fclose(fo);
    return 0;
}