Ominide 1931 punti

C++ - Determinare se un numero è primo

Sappiamo benissimo che un numero n è primo se e solo se gli unici numeri interi che dividono n sono n e 1.
Esempio:
17 è primo (non è divisibile per nessuno dei numeri compresi tra 2 e 16);
25 è composto (divisibile per 1, 5, 25).
Ma 1 è primo? NO!
Precisamente, possiamo dire che i numeri primi hanno solamente 2 divisori (1 e sé stessi), mentre 1 ce ne ha solamente uno!
Il ragionamento da far seguire all'esecutore è di contare i divisori, per tentativi.
Ecco il codice, spiegato passo passo!
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int N; //introduciamo le variabili
int contaPassi;

int Resto;
int K;
K = 1; //Facciamo partire K da 1 (per verificare la divisibilità)
contaPassi = 0; //e il numero dei divisori naturalmente da 0
cout << "Inserisci un numero intero per verificare se è primo" << endl; //Stampiamo il messaggio che inviti ad inserire N
cin >> N; //si inserisce N
while(K <= N){ //mentre K è minore o uguale ad N
Resto = N % K; //definisco Resto come N modulo K
if(Resto == 0){ //Se il resto è 0, allora N è divisibile per K
contaPassi = contaPassi + 1; //aggiungo uno al numero dei divisori
}
K = K+1; //K viene aumentato di 1
}
if(contaPassi == 2){ //Se i divisori sono 2
cout << "Il numero " << N << " e' primo" <<endl; //Diciamo che il numero è primo
} else { //diversamente...
cout << "Il numero " << N << " non e' primo" <<endl; //il numero non è primo
}
system ("pause"); //Fine programma
}
Hai bisogno di aiuto in Informatica?
Trova il tuo insegnante su Skuola.net | Ripetizioni
Potrebbe Interessarti
Registrati via email