Algoritmo numerico con struttura ciclica Dato un numero N intero > 3 stabilire se è primo Algoritmo 1 Start N I V N<4 F F=0 K=2 F K <=N/2 V R = N Mod K F V R=0 F=1 K=K+1 F non primo F=0 V primo O O End Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI Pag. 1 Algoritmo numerico con struttura ciclica Analisi dei dati Identificatore Descrizione Tipo Input Output si Lavoro N numero da sottoporre al calcolo richiesto dalla traccia intero si K contatore intero si si R comodo : contiene il resto della divisione fra N e K intero si si F flag : utilizzato per verificare intero se esiste un divisore di N (in tal caso il numero non è primo) si messaggi #include <iostream> using namespace std; // dato un numero N intero > 3 stabilire se è primo int main (int argc, char *argv[]) { char quit; quit = '\0'; int N,r,k,f; while (quit != 'q') { do{ cout << "inserire il numero ......:" ; cin >> N ; }while(N<4); f=0; for (k=2; k<=N/2; ++k) { r=N%k; if (r==0) {f=1;} } if (f==0) { cout << "numero primo"<<endl; } else { cout << "numero non primo"<<endl; } // ==================================================== // termine programma con richiesta di uscita cout << "Premere q per uscire "; cin >> quit; } return 0; } Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI Pag. 2 Algoritmo numerico con struttura ciclica Algoritmo 2 Start N I V N<4 F F=0 K=1 F F=0 V K=K+1 R = N Mod K F V R=0 F=1 F non primo N=K V primo O O End Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI Pag. 3 Algoritmo numerico con struttura ciclica Analisi dei dati Identificatore Descrizione Tipo Input Output si Lavoro N numero da sottoporre al calcolo richiesto dalla traccia intero si K contatore intero si si R comodo : contiene il resto della divisione fra N e K intero si si F flag : utilizzato per uscire dal ciclo appena trovato un divisore intero si messaggi #include <iostream> using namespace std; // dato un numero N intero > 3 stabilire se è primo int main (int argc, char *argv[]) { char quit; quit = '\0'; int N,r,k,f; while (quit != 'q') { do{ cout << "inserire il numero ......:" ; cin >> N ; }while(N<4); f=0; k=1; while(f==0) { ++k; r=N%k; if (r==0) {f=1;} } if (N==k) { cout << "numero primo"<<endl; } else { cout << "numero non primo"<<endl; } // ==================================================== // termine programma con richiesta di uscita cout << "Premere q per uscire "; cin >> quit; } return 0; } Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI Pag. 4 Algoritmo numerico con struttura ciclica Algoritmo 3 Start N I V N<4 F K = N/2 R = N Mod K K=K-1 V R ≠ 0 AND K ≠ 1 F F non primo R≠0 V primo O O End Analisi dei dati Identificatore Descrizione Tipo Input Output si Lavoro N numero da sottoporre al calcolo richiesto dalla traccia intero si K contatore intero si si R comodo : contiene il resto della divisione fra N e K intero si si messaggi Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI Pag. 5 Algoritmo numerico con struttura ciclica #include <iostream> using namespace std; // dato un numero N intero > 3 stabilire se è primo int main (int argc, char *argv[]) { char quit; quit = '\0'; int N,r,k; while (quit != 'q') { do{ cout << "inserire il numero ......:" ; cin >> N ; }while(N<4); k=N/2; do{ r=N%k; --k; }while(r!=0 && k!=1); if (r!= 0) { cout << "numero primo"<<endl; } else { cout << "numero non primo"<<endl; } // ==================================================== // termine programma con richiesta di uscita cout << "Premere q per uscire "; cin >> quit; } return 0; } Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI Pag. 6