{ File: primi.pas } { Scopo: esercizio sull'uso di cicli e di funzioni } program NumeriPrimi; var numero : integer; function TestDivisibile (n: integer): boolean; { verifica se il numero n e` divisibile } var i : integer; temp : boolean; { valore booleano che facciammo corrispondere all'affermazione "trovato un divisore per n" } begin i := 2; temp := FALSE; { inizializzazioni: 2 sara' il primo valore controllato; il procedimento consiste nel cercare di dimostrare che il numero non e' primo (perche' troviamo un divisore). Allora inizialmente poniamo 'temp' = FALSE. Se durante il ciclo di ricerca dei divisori troviamo un divisore, temp diventa TRUE e il ciclo deve interrompersi. } while ((i < n) and not temp) do begin if n mod i = 0 then temp := TRUE; i := i + 1; end; TestDivisibile := temp; end; { TestDivisibile } begin { NumeriPrimi } writeln; write('Inserire un numero? '); readln(numero); write('Il numero proposto '); if TestDivisibile(numero) then writeln('non e'' primo.') else writeln('e'' primo.'); readln end. { NumeriPrimi }