Capitolo 2
Scomposizione in fattori primi
Questo
programma non introduce componenti di Delphi nuovi, ma è interessante dal
punto di vista matematico per l'algoritmo di scomposizione in fattori.
Il numero presente nel campo Edit viene memorizzato in una variabile (n);
alla pressione del tasto Scomponi, nel campo Memo viene visualizzata la
scomposizione in fattori del numero, come se venisse eseguita a mano. Per
esempio:
|
198345510
|
| |
2
|
|
99172755
|
| |
3
|
|
33057585
|
| |
3
|
|
11019195
|
| |
3
|
|
3673065
|
| |
3
|
|
1224355
|
| |
5
|
|
244871
|
| |
11
|
|
22261
|
| |
113
|
|
197
|
| |
197
|
| 1 |
| |
|
Passiamo al listato della procedura associata al tasto Scomponi:
procedure TFormScomposizione.BitBtnScomponiClick(Sender: TObject);
var
n, d: Integer;
begin
n:=StrToInt(Editn.Text);
MemoScomposizione.Lines.Clear;
d:=2;
while n>1 do
if n mod d=0 then
begin
MemoScomposizione.Lines.Add(IntToStr(n)+#9+' | '+IntToStr(d));
n:=n div d;
end
else
Inc(d);
MemoScomposizione.Lines.Add(IntToStr(n));
end;
Viene letto il numero n ed assegnato a d il numero 2, che
è il primo possibile divisore di n.
Si entra nel ciclo while e si rimane per tutto il tempo in cui n
è maggiore di 1, poiché ciò significa che vi sono ancora altri fattori
primi da ricercare.
All'interno del ciclo while si vede se n è divisibile per d
(n mod d=0): in caso affermativo il divisore d viene
visualizzato ed n viene diviso per d (n:=n div d), in
caso contrario d viene incrementato di 1 (Inc(d)), per cercare di
trovare il divisore successivo.
Alla fine si raggiungerà l'ultimo divisore di n, che nella peggiore
delle ipotesi è n stesso, se n è primo, e si uscirà dal
ciclo.
Infine viene ancora scritto l'ultimo valore ottenuto per n, che è
sicuramente 1.
2.07
- Scomposizione
|