|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2007
Città: Viterbo
Messaggi: 2559
|
[C++] Verificare se un numero sia primo o meno
Sto facendo per esercizio un programmino che mi dice se un numero è primo o no, solo che a parte per i primi due if (cioè per i<=0, i=1,2,3) non funziona, mi stampa sempre "Non è un numero primo". Il problema quindi credo sia nel for, magari nell'uso errato del modulo...
Metodo: Codice:
bool isNumPrimo(int i){
if(i<=0){
cout << "Numero minore o uguale a 0" << endl;
return false;
}
if(i==1 || i==2 || i==3){
return true;
}
for(int j=2;j<i;i++){
if(i%j==0){
return false;
}
}
return true;
}
Codice:
int main(int argc, char *argv[])
{
int num;
cout << "Questo programma verifica se un numero è primo o no" << endl;
cout << "Inserisci il numero" << endl;
cin >> num;
bool risposta=isNumPrimo(num);
if(risposta){
cout << num << " è un numero primo" << endl;
}
else{
cout << num << " non è un numero primo" << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
__________________
Coolermaster Centurion 590 - Asus M4A78PRO - Phenom II 720 - HIS 6950 IceQ X Turbo 2GB - 2x2 Gb Corsair XMMS2 - Crucial MX300 500gb - HD WD 500gb - Asus VW246H - Windows 7 Pro 64bit
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
nel for incrementi la variabile sbagliata. inoltre puoi fermarti a i/2, non serve arrivare ad i
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
In realtà ci si può fermare anche a sqrt(i) se non erro.
ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2007
Città: Viterbo
Messaggi: 2559
|
Ecco, mi sono confuso perchè di solito i lo uso per gli indici
Grazie per le risposte, poi ragionerò su qual è matematicamente il limite entro cui far andare il ciclo
__________________
Coolermaster Centurion 590 - Asus M4A78PRO - Phenom II 720 - HIS 6950 IceQ X Turbo 2GB - 2x2 Gb Corsair XMMS2 - Crucial MX300 500gb - HD WD 500gb - Asus VW246H - Windows 7 Pro 64bit
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jun 2007
Città: Lecco
Messaggi: 250
|
Puoi usare la radice quadrata, eliminare a priori i numeri pari (un if preventivo che controlla se sono divisibili per 2) e controllare a parte se il numero è 1. Dovrebbe funzionare.
Inoltre, per le divisioni successive puoi usare solo i numeri dispari (perchè se un numero è divisibile per un numero pari, è divisibile anche per 2 e quelli li abbiamo scartati in partenza!)
__________________
Asus P5Q PRO - Intel Core 2 Duo E8400 @3.2 GHz - 4GB G. Skill DDR2-1066 CL5 - Powercolor Radeon HD6870 PCS+ 1GB @940/5500 MHz - 200GB Maxtor SATAII + 1TB LaCie USB - LC-POWER Metatron Hyperion 700W PSU - Samsung XL2370 23'' Full HD LED Firmate - Per la sicurezza di noi tutti | Progetto Traduzione "The Void" |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2006
Città: Trieste
Messaggi: 5558
|
Il numero 1 non è un numero primo.
http://it.wikipedia.org/wiki/Numero_primo
__________________
You should never let your fears become the boundaries of your dreams. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:25.



















