Cod sursa(job #963769)

Utilizator rekingCretu Bogdan reking Data 19 iunie 2013 15:19:36
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
unsigned long long ciur [2000000];
int verifica (int x)
{
    int i;
    if (x==0 || x==1 || (x%2==0 && x!=2)) return 0;
    if (x==2) return 1;
    for (i=3;i<=sqrtf(x);i=i+2)
        if (x%i==0) return 0;
    return 1;
}
void aloca (int n,int x)
{
    unsigned long long i;
    for (i=x*x;i<=x;i=i+x) ciur[i]=0;
}
int main ()
{
    unsigned int n,i,s=0;
    f>>n;
    for (i=2;i<=n;i++) ciur[i]=i;
    for (i=2;i<=n;i++)
        if (verifica(ciur[i]))
        {
            aloca(n,i);
            s++;
        }
    g<<s;
}