Pagini recente » Cod sursa (job #3196062) | Cod sursa (job #260286)
Cod sursa(job #260286)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct lista{
struct lista *urm;
long nr;
} numar;
void adaugare(numar *p, long n){
p->urm=malloc(sizeof(numar));
p->urm->urm=NULL;
p->urm->nr=n;
}
void creare(numar *p,long n){
numar *i;
long k;
i=p;
for(k=2;k<=n;k++){
adaugare(i,k);
i=i->urm;
}
}
void stergere(numar *p){
numar *aux=p->urm;
p->urm=aux->urm;
free(aux);
}
void ciur(numar *p,long n){
numar *i,*j;
for(i=p->urm;i->nr<sqrt(n);i=i->urm){
j=i->urm;
while(j->urm!=NULL)
if((j->urm->nr)%(i->nr)==0) stergere(j);
else j=j->urm;
}
}
int main(){
FILE *f=fopen("ciur.in","rt");
long n,nrp=0;
numar *p,*k;
p->urm=NULL;
fscanf(f,"%ld",&n);
fclose(f);
creare(p,n);
ciur(p,n);
for(k=p->urm;k->urm!=NULL;k=k->urm){
++nrp;
}
k=p;
while(k!=NULL){
p=k;
k=k->urm;
free(p);
}
f=fopen("ciur.out","wt");
fprintf(f,"%ld",nrp);
fclose(f);
return 0;
}