Cod sursa(job #880191)

Utilizator romykPrehari Romica romyk Data 16 februarie 2013 14:36:58
Problema Ciurul lui Eratosthenes Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>
#include <stdbool.h>

#define MAXSIZE 10000000
#define Sasa 6
#define UNU 1

long long i,j,j2,i1,i2,i22,i11;
int m=2,n;
bool a[MAXSIZE];

int main()
{   freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);
    scanf("%i",&n);
    for(i= Sasa ; i < n ; i += Sasa)
    {
        i1 = i - UNU;
        i2 = i + UNU;
        if(! a [ i1 ])
        {
         m++;
            i11 = i1 * Sasa;
            for( j = i11 + i1, j2 = i1 * i1 ; j <= n; j += i11, j2 += i11 )
                {
                    a[j]=true;
                    if( j2 <= n )
                         a[j2]=true;
        }}
        if(! a [ i2 ] )
        {
             m++;
            i22 = i2 * Sasa;
            for(j = i22 + i2 ; j <= n ; j += i22)
                a[j]=true;
        }
     }
     printf( "%d" , m );
     return 0;
}