ho visto l'algoritmo e c'è un problema quando inizializzi f. Lo fai prima che dai in input a, e il valore è indefinito dunque.
Inoltre

codice:
if (r==0) printf("%d\n", d);
non mi torna. Dovrebbe essere

codice:
if (r==0) printf("%d\n", c);
se vuoi stampare i divisori. Tu invece stampi il valore della divisione (d).