📄 a315prim.cpp
字号:
// nuovi concetti: stringa vuota ("")
// nuovi elementi: const, bool
//**********************************************************************
//* *
//* Controlla se "n" e' un numero primo (2<=n<=nmax). *
//* *
//**********************************************************************
#include <iostream>
using namespace std;
const int NMAX = 10000;
bool datobuono (int& n, int massimo) {
//*****************************************************************
//* *
//* Ottiene il successivo dato valido, se esiste, saltando *
//* eventuali valori che siano al di fuori dell'intervallo *
//* permesso. Il valore trovato, se c'e', ritorna attraverso *
//* il parametro riferimento "n". Se si preme ^Z, o si *
//* introduce un carattere non accettabile come intero, la *
//* funzione restituisce "falso". Il parametro valore *
//* "massimo" determina l'intervallo accettabile dei dati. *
//* *
//*****************************************************************
bool trovato = false; // abbiamo trovato un "n" valido?
while ( (!trovato) && (cin >> n) )
if ( (n>=2) && (n<=massimo) ) trovato = true;
else cout << n << " fuori limiti: ignorato\n";
return trovato;
} // datobuono
bool decidi (int n) {
//****************************************************************
//* *
//* Determina se "n" e' un numero primo. *
//* Questo sottoprogramma ha un parametro valore; usa due *
//* variabili locali, ma non fa riferimento a nessuna *
//* variabile globale. *
//* *
//****************************************************************
int provadivisore, // possibili divisori di "n"
limite= int(sqrt(float(n))); // il piu' grande divisore possibile di "n"
for (provadivisore = 2; (provadivisore<=limite) && (n % provadivisore);
provadivisore++);
return (provadivisore > limite);
} // decidi
void mostra (int numero, bool estprimo) {
//***************************************************************
//* *
//* Mostra la decisione del programma ("estprimo") sul *
//* numero corrente. Questo sottoprogramma ha due parametri *
//* valore; non usa variabili locali ne' fa riferimento *
//* a variabili globali *
//* *
//***************************************************************
cout << numero << (estprimo ? "" : " non")
<< " e' un numero primo" << endl;
} // mostra
int main() { // programma principale
int n; // il valore da controllare (dato)
cout << "Controlla se numeri positivi non superiori a " << NMAX
<< " sono primi (^Z per finire):\n\n";
while (datobuono(n,NMAX))
mostra(n,decidi(n));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -