Ti mando il codice corretto 
codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct dati* lol;
struct dati
{
int numero;
lol next;
};
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void lsist_delete_node(lol x);
void search_node(lol* n);
void stampalista(lol n);
int cercanumero(int m,int array[50]);
lol lsist_insert_order(lol head,lol n);
int main(int argc, char *argv[]) {
srand(time(NULL));
FILE* fp;
int x; int l;
fp=fopen("numericasuali.txt","w");
int array[51];
for (x=0;x<50;x++)
{
int s=2 + rand() %51;
if (l=cercanumero(s,array)!=0)
array[x]=s;
else x--;
}
for (x=0;x<50;x++)
{
if(x==49)
fprintf(fp,"%d",array[x]);
else
fprintf(fp,"%d\n",array[x]);
}
fclose(fp);
fp=fopen("numericasuali.txt","r");
lol il=NULL; lol nodo=NULL;
while(!feof(fp))
{
nodo=malloc(sizeof(struct dati));
fscanf(fp,"%d\n",&nodo->numero);
nodo->next=NULL;
il=lsist_insert_order(il,nodo);
}
fclose(fp);
int s;
//printf("Digita il numero da cancellare\n"); scanf("%d",&s);
//lol trp=il;
/* while(trp!=NULL && trp->next->numero!=s)
{
trp=trp->next;}
lsist_delete_node(trp);*/
lol temp; lol asd=il;
while(asd!=NULL)
{
int z=asd->numero; printf("\n%dsd\n",z);
temp=il;
while(temp!=NULL){
if(temp->next->numero % z==0 && temp->next!=NULL){
lsist_delete_node(temp);}
temp=temp->next;}
asd=asd->next;
}
stampalista(il);
system ("PAUSE");
return 0;
}
/*void search_node(numero* n)
{
int m=(*n)->numero;
while((*n)!=NULL)
{
if(m%(*n)->next->numero==0)
delete_node(&n);
}
}
*/
int cercanumero(int m,int array[50])
{
int x;int s;
for (x=0;x<50;x++)
{
if (array[x]==m ){
int s=0;
return s;}
}
int o=10;
return o;
}
lol lsist_insert_order(lol head,lol n){
/*Se la lista è vuota deve mettere il nodo n in testa*/
if(head==NULL)
return n; /*ritorna n come testa della lista*/
lol t=head; /*t puntatore di appoggio per scorrere la lista*/
/*Controlla se deve inserire il nodo n in testa alla lista*/
if (n->numero < t->numero) {
n->next=t; /*sposta il puntatore del nodo successivo di n alla vecchia testa*/
return n; /*ritorna n come testa della lista*/
}
/*Scorre la lista */
while(t->next!=NULL) { /*si ferma all'ultimo nodo*/
if (n->numero < t->next->numero) { /*confronta i campi item fra n e il nodo successivo a t*/
n->next=t->next; /*inserisce il nodo n */
t->next=n; /* dopo il nodo t */
return head; /*ritorna la testa*/
}
t=t->next; /*sposta t al nodo successivo per scorrere la lista*/
}
t->next=n; /*aggiunge n alla fine della lista*/
return head; /*ritorna la testa*/
}
void stampalista(lol n)
{
while(n!=NULL)
{
printf ("%d\n",n->numero);
n=n->next;
}
}
void lsist_delete_node(lol x){
//if (x->next==NULL) return; /*ritorna NULL se non c'è nessun nodo dopo x*/
lol t=x->next; /*salvo il puntatore al nodo da togliere in t */
x->next=t->next;
free(t); /*tolgo il nodo t dalla lista */
/*ritorna il puntatore al nodo tolto dalla lista*/
}