Non hai specificato cosa intendi per << perchè è stato scritto così >> cosa?
Intendi questo?
if (res) return res;
Non ha senso infatti, lo avrebbe se la funzione primo() ritornasse vari valori, 0 o un valore
diverso da 0, che abitualmente identifica errore (0=ok, 1 o >0 = errore o i codici di errrore)
In qual caso la main uscirebbe con lo stesso codice di errore della funzione primo().
Ma visto che ritorna sempre 0.... puoi togliere e trasformare la funzione in "void".
Oppure aggiungi casi in cui primo() ritorna in caso di errore "1", allora la cosa ritorna ad avere
senso, ma mi sembra che ti stai imbarcando in problematiche di secondo piano per te al momento.