Salve a tutti, sto scrivendo un programma per un esame, e per l'esattezza è un programma che dovrebbe dirmi se un numero è primo oppure no. Il codice è il seguente:
Il problema ora è questo, anzi questi:codice:#include<iostream> #include<stdlib.h> using namespace std; int main () { long long p; 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 { 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"; } cout<< p <<" e' un numero primo!\n"; exit(0); }; }
1) quando digito alcuni numeri va benissimo, ma se ad esempio digito il numero "33", l'output è questo:
Dove ho sbagliato nel codice? Perché è evidente che 33 non è un numero primo, ma li mi butta entrambi i risultati.codice:~/Scrivania/Downloads$ ./a.out Digita un numero intero positivo: 33 33 = 3 * 11 Dunque non e un numero primo. 33 = 11 * 3 Dunque non e un numero primo. 33 e' un numero primo!
Inoltre vorrei chiedervi anche queste cose:
1bis) come faccio affinché produca la lista di "moltiplicandi e moltiplicatori" possibili (come ha fatto nell'esempio, ossia mostrare che 33 = 11*3 e 3*11), senza che venga interrotto dalla scritta "dunque non è un numero primo"?
1tris) come faccio, una volta ottenuto il risultato, a fare in modo che il programma mi richieda di inserire un altro numero, senza che invece esca dal processo?
Grazie a tutti!!!!!

Rispondi quotando