Cod sursa(job #526331)

Utilizator maritimCristian Lambru maritim Data 28 ianuarie 2011 00:45:05
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include<iostream>
using namespace std;

typedef struct _nod
{
   int info;
   struct _nod *adr;
} nod;

long int n;
long int nr = 2;
nod *cap = (nod*)malloc(sizeof(nod));
nod *coada;

void citire(void)
{
     FILE *f = fopen("ciur.in","r");
     
     fscanf(f,"%d",&n);
     
     fclose(f);
}

void erathosteness(void)
{
     cap->info = 7;
     coada = cap;
     for(int i=7;i<=n;i++)
     if(i%2 && i%3 && i%5)
     {
        nod *nou = (nod*)malloc(sizeof(nod));
        nou->adr = NULL;
        nou->info = i;
        coada->adr = nou;
        coada = nou;
     }
     nod *q = cap;
     while(q)
     {
       nod *w = q->adr;
       while(w)
       {
          if(w->adr)
            if(!(w->adr->info%q->info))
            {
//              nod *x = w;
              w->adr = w->adr->adr;
//              free(x);
            }
          w = w->adr;
       }
       q = q->adr;
       nr++;
     }
}

void tiparire(void)
{
     FILE *f = fopen("ciur.out","w");
     
     nod *q = cap;
/*     while(q)
     {
       fprintf(f,"%d ",q->info);
       q = q->adr;
     }
*/
     fprintf(f,"%d",nr);
     
     fclose(f);
}

int main()
{
    citire();
    erathosteness();
    tiparire();
}