Ciao,
beccato l'errore!
Era nella funzione printListI. La versione corretta è questa:

codice:
void printListI(struct numero *p)
{
    struct numero *t = p;
    for(; t!=NULL; t = t->next)
    {
        printf("%3d  DIVISORI nell'intervallo [2,10]: ", t->n);
        printListD(t->lista_divisori);
        printf("\n");
    }
}

Invece tu avevi scritto

codice:
printListD(p->lista_divisori);

cioè una "p" al posto di una "t".