Dati due numeri interi calcolare il MCD

“Algoritmi numerici”
Dati due numeri interi calcolare il MCD
Algoritmo 1 (per differenze successive)
¾ Analisi dei dati
Identificatore
Descrizione
Tipo
Input
A
primo numero
intero
si
B
secondo numero
intero
si
C
comodo usata per lo
scambio
intero
si
Output
Lavoro
si
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
si
Pag. 1
“Algoritmi numerici”
#include <iostream>
using namespace std;
// ricerca del MCD fra due numeri per differenze successive
int main (int argc, char *argv[])
{
char quit;
quit = '\0';
int a,b,c;
while (quit != 'q')
{
cout << "inserire il primo numero ......:" ;
cin >> a ;
cout << "inserire il secondo numero ....:" ;
cin >> b ;
while (a!=b)
{
if (a<b)
{
c=a;
a=b;
b=c;
}
a=a-b;
}
cout << "il M.C.D. e' : " << b<<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
“Algoritmi numerici”
Algoritmo 2 (per differenze successive)
¾ Analisi dei dati
Identificatore
Descrizione
Tipo
Input
Output
si
A
primo numero
intero
si
B
secondo numero
intero
si
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
Pag. 3
“Algoritmi numerici”
#include <iostream>
using namespace std;
// ricerca del MCD fra due numeri per differenze successive
int main (int argc, char *argv[])
{
char quit;
quit = '\0';
int a,b,c;
while (quit != 'q')
{
cout << "inserire il primo numero ......:" ;
cin >> a ;
cout << "inserire il secondo numero ....:" ;
cin >> b ;
while (a!=b)
{
if (a>b)
{
a=a-b;
}
else
{
b=b-a;
}
}
cout << "il M.C.D. e' : " << a<<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
“Algoritmi numerici”
Algoritmo 3
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
Pag. 5
“Algoritmi numerici”
¾ Analisi dei dati
Identificatore
A
B
MCD
Descrizione
Tipo
Input
primo numero
intero
si
secondo numero
intero
si
massimo comune divisore intero
Output
Lavoro
si
comodo : resto delle
divisioni
intero
si
K
contatore
intero
si
C
comodo : utilizzata per lo
scambio
R, RA, RB
si
#include <iostream>
using namespace std;
// ricerca del MCD fra due numeri
int main (int argc, char *argv[])
{
char quit;
quit = '\0';
int a,b,c,r,ra,rb,k,MCD;
while (quit != 'q')
{
cout << "inserire il primo numero ......:" ;
cin >> a ;
cout << "inserire il secondo numero ....:" ;
cin >> b ;
if (a<b)
{
c=a;
a=b;
b=c;
}
r=a%b;
if(r==0)
{MCD = b;}
else
{
MCD=1;
for(k=2; k<b/2; k++)
{
ra = a%k;
rb = b%k;
if(ra==0 && rb==0)
{MCD = k;}
}
}
cout << "il M.C.D. e' : " << MCD<<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
“Algoritmi numerici”
Algoritmo 4
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
Pag. 7
“Algoritmi numerici”
¾ Analisi dei dati
Identificatore
Descrizione
Tipo
Input
A
primo numero
intero
si
B
secondo numero
intero
si
massimo comune divisore
intero
MCD
R, RA, RB
Output
Lavoro
si
comodo : resto delle divisioni intero
si
F
flag
intero
si
K
comodo : divisore comune
intero
si
C
comodo : utilizzata per lo
scambio
si
#include <iostream>
using namespace std;
// ricerca del MCD fra due numeri
int main (int argc, char *argv[])
{
char quit;
quit = '\0';
int a,b,c,r,ra,rb,k,MCD,f;
while (quit != 'q')
{
cout << "inserire il primo numero ......:" ;
cin >> a ;
cout << "inserire il secondo numero ....:" ;
cin >> b ;
if (a<b)
{ c=a;
a=b;
b=c;}
r=a%b;
if(r==0)
{MCD = b;}
else
{ MCD=1;
k=b/2;
f=0;
do
{ra = a%k;
rb = b%k;
if(ra==0 && rb==0)
{MCD = k;
f=1;}
else
{k--;}
}while(f==0);
}
cout << "il M.C.D. e' : " << MCD<<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. 8