Home

A scuola di Delphi

www.gpeano.org 

Introduzione · Capitolo 1 · Capitolo 2 · Capitolo 3 · Capitolo 4 · Capitolo 5 · Download 

Sommario
Indovina numero
Sistema lineare
Figura
Distr. automatico
Potenze
Mcm
Scomp. in fattori
Numeri primi
 

Capitolo 2

Numeri primi

Anche questo programma non introduce componenti di Delphi nuovi, ma è interessante dal punto di vista matematico per l'algoritmo di ricerca dei numeri primi.

Per la sua comprensione può essere utile aver visto il programma precedente sulla scomposizione in fattori primi.

Il programma legge l'intervallo entro cui ricercare i numeri primi, definito dai due campi Edit presenti in alto a sinistra.
Sulla destra nel Memo saranno visualizzati i numeri primi trovati all'interno dell'intervallo.

Passiamo al listato della procedura associata al tasto Ricerca:

procedure TFormNumeriPrimi.BitBtnRicercaClick(Sender: TObject);
var
n1, n2, n, d: Integer;
begin
  n1:=StrToInt(EditN1.Text);
  if n1<2 then
    n1:=2;
  n2:=StrToInt(EditN2.Text);
  MemoPrimi.Lines.Clear;
  for n:=n1 to n2 do
  begin
    d:=2;
    while n mod d<>0 do
      Inc(d);

    if d>=n then
      MemoPrimi.Lines.Add(IntToStr(n));
  end;
end;

Dopo aver letto l'estremo inferiore dell'intervallo di ricerca n1, si controlla che questo sia maggiore di 1, perché il primo numero primo è 2. Quindi viene letto l'estremo superiore n2.
Si esegue un ciclo for sulla variabile n da n1 a n2. La variabile d viene inizializzata a 2, che è il primo possibile divisore di n. Si entra in un ciclo while e si rimane all'interno per tutto il tempo in cui d non è divisore di n (n mod d<>0), incrementando ogni volta di 1 la variabile d (Inc(d)).
Non appena si trova un divisore di n, si esce dal ciclo e si verifica tramite un if se il valore del divisore d che è stato trovato è almeno uguale ad n: una risposta affermativa significa che non vi sono divisori di n minori di n stesso e che quindi il numero è primo.
Il numero primo trovato viene aggiunto alla lista nella Memo.

 2.08 - Numeri primi