Dato un numero N intero > 3 stabilire se è primo

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