Cod sursa(job #1699501)

Utilizator TincaMateiTinca Matei TincaMatei Data 7 mai 2016 15:46:40
Problema Ciurul lui Eratosthenes Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#define MAX_N 2000000
#define MAX_PRIME 200000

int low[ MAX_N ];
int primes[ MAX_PRIME ];
int top;

void ciur( int n ) {
  int i , j;
  for( i = 2 ; i <= n ; i++ ) {
    if( low[ i ] == 0 ) {
        primes[ top ] = i;
        top++;
        low[ i ] = i;
    }
    j = 0;
    while( j < top && i * primes[ j ] <= n && primes[ j ] <= low[ i ] ) {
        low[ i * primes[ j ] ] = primes[ j ];
        j++;
    }
  }
}

int main() {
    int n;
    FILE *fin = fopen( "ciur.in" , "r" );
    fscanf( fin , "%d" , &n );
    fclose( fin );

    ciur( n );

    FILE *fout = fopen( "ciur.out" , "w" );
    fprintf( fout , "%d" , top );
    fclose( fout );
    return 0;
}