In subprogramul tau variabila d creste dupa ce este apelat f(n,d++) dar nefiind varaibila globala nu o creasca niciodata. Deci, trebuie ++d nu d++, ori programul va apela acelasi f(n,d) la infinit (atata timp cat d-ul initial este mai mic decat n/2). Asa va face ++ inainte sa se reapeleze.
Cu modificarea aceasta obtii divizorii proprii ai numarului 1000 cu apelul f(1000,1). Dar si un 500 inainte deoarece subprogramul verifica de 2 ori d=500. Pentru a rezolva si problema asta trebuie sa modifici d<n/2 in d<=n/2.