Programma numeri primi
Ciao, sto scrivendo un programma in c++ per verificare se un numero n è primo e trovare tutti i numeri primi minori di n. La professoressa c'ha dato questo algoritmo
kflag=0;
for(i=2;i<=sqrt(n);i++)
if(n%i==0) {
kflag=1;
printf("%d non e' primo",n);
i=sqrt(n);}
if(kflag==0) printf("\n %d e' primo ",n);
L'ho provato e funziona però c'è una cosa che non capisco: ad esempio se io gli do n=2, il programma fa n%i, cioè 2%2 che è zero..allora mi dovrebbe entrare nel primo if e kflag dovrebbe diventare 1 e quindi mi dovrebbe dire che 2 non è primo. E invece mi stampa che effettivamente 2 è primo, perchè? come fa a non entrare nel primo if?
Spero di essermi spiegata bene!
Grazie mille a chiunque risponderà!
kflag=0;
for(i=2;i<=sqrt(n);i++)
if(n%i==0) {
kflag=1;
printf("%d non e' primo",n);
i=sqrt(n);}
if(kflag==0) printf("\n %d e' primo ",n);
L'ho provato e funziona però c'è una cosa che non capisco: ad esempio se io gli do n=2, il programma fa n%i, cioè 2%2 che è zero..allora mi dovrebbe entrare nel primo if e kflag dovrebbe diventare 1 e quindi mi dovrebbe dire che 2 non è primo. E invece mi stampa che effettivamente 2 è primo, perchè? come fa a non entrare nel primo if?
Spero di essermi spiegata bene!
Grazie mille a chiunque risponderà!
Risposte
Perchè per n=2, la i del ciclo for va da 2 ad 1 e quindi non entra MAI nel for e passa direttamente all'IF finale
[xdom="Raptorista"]Questo è un problema di informatica!
[/xdom]
