Ho solo aggiunto un "break" e una variable "bool primo".
Ho anche indentato il codice.
codice:
#include <iostream>
using namespace std;
void chiedi_primo()
{
long long p;
bool primo;
cout << "Digita un numero intero positivo: \n", cin >> p;
if (p < 0)
cout << "Non fare il furbetto, voglio un numero positivo!\n";
else if (p < 2)
cout << "Questo non è un numero primo.\n";
else if (p == 2 || p == 3)
cout << p << "e un numero primo, e per giunta anche il mio preferito!\n";
else if (p % 2 == 0)
cout << p << " = 2*" << p / 2 << " e come vedi non è un numero primo." << endl;
else {
primo = true;
for (int q = 3; q <= p / 2; q += 2)
if (p % q == 0) {
cout << p << " = " << q << " * " << p / q << endl;
cout << "Dunque non e un numero primo.\n";
primo = false;
break;
}
if (primo)
cout << p << " e' un numero primo!\n";
}
}
int main()
{
while (true)
chiedi_primo();
return 0;
}
P.S. Ho aggiunto anche che ti richiedesse il numero usando una FUNZIONE (chiedi_primo).