Cod sursa(job #547701)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 6 martie 2011 17:27:32
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;

int main()
{
 int limit;
 
 ifstream f("ciur.in");
 ofstream g("ciur.out");
 
 f>>limit;
 
 char A[limit];
 long int i,j,x;
 

 
 
 for (i=1;i<limit;i++)
 {
 A[i] = 0;    
 }  
    
 for (i=1;i<=sqrt(limit);i++)
 for (j=1;j<=sqrt(limit);j++)
 {
    x = 4*i*i+j*j;
    if (x<limit) if ((x % 12==1) || (x % 12==5)) A[x] = !A[x];
    x = 3*i*i+j*j;
    if (x<limit) if (x % 12==7) A[x] = !A[x];
    x = 3*i*i-j*j;
    if (i>j) if (x<limit) if (x % 12==11) A[x] = !A[x];
 }
    
 for (i=5;i<=sqrt(limit);i++)
 {
     x = i*i;
     j = 1;
 while (j*x<limit)
 {
       A[j*x] =0;
       j++;
 }
 }  
 
 A[2] = 1;
 A[3] = 1;
 
 x = 0;
 for (i=2;i<limit;i++) if (A[i]) x++;
 
 g<<x;
 

}