PDA

View Full Version : [C++] Programma numeri primi


-Yara-
04-11-2004, 18:07
Ciao a tutti

Oggi il prof ha scritto alla lavagna sta roba qua:
Non riesco a capire il ciclo while, cioè perchè ha scritto divisore++?
Qualcuno me lo puo' spiegare un po'?

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

void main() {
char scelta='s';
do{
int N,divisore=2,contadiv=0;
cout<<"\nInserire un numero intero: ";
cin>>N;
while(divisore<N) {
if(N%divisore==0) contadiv++;
divisore++;
}
if(contadiv==0) cout<<"\nPRIMO";
else cout<<"\nNON PRIMO";

cout<<"\nVuoi continuare? s=si";
cin>>scelta;
if(scelta!='s')
{
cout<<"\nHai scelto di uscire dal programma"<<endl;
system("pause");
exit(0);
}


}while(scelta=='s');

getch();
}

Grazie

beppegrillo
04-11-2004, 18:58
Divide il numero N per tutti i numeri compresi tra 1<x<N e verifica che la divisione tra N ed x non dia un resto diverso da 0, se lo dà allora il numero non sarà primo.

lombardp
05-11-2004, 07:21
Un consiglio: puoi renderlo il programma il doppio più veloce facendo while(divisore<=N/2) invece che while(divisore<N), dato che un divisore non sarà mai maggiore di N/2.

Ziosilvio
05-11-2004, 09:42
Meglio: puoi fare:
while (divisore*divisore <= N)
dal momento che, se N ha un fattore "proprio" (cioe' maggiore di 1 e minore di N), allora ne ha anche uno che non supera la sua radice quadrata (esercizio).

P.S.: main deve essere di tipo int, e conio.h non e' standard.