Quoto c0der e aggiungo che se la funzione int primo() venisse modificata, si otterrebbe il risultato corretto:

codice:
if (divisori > 0){
  cout <<"\nQuesto dimostra che "<< p <<" non e un numero primo.\n\n"; 
  return 0;
}else{
  cout <<"\n"<< p <<" e' un numero primo!\n\n";
  return 1;
}
}