Első lépésként létre kell hoznunk egy olyan függvényt, mely megállapítja egy számról, hogy az prímszám-e.
Lássuk a kódot:
Függvényünk egy integer típusú számot vár elemzésre, majd amennyiben a megadott érték prímszámnak bizonyul, True értéket ad vissza, ellenkező esetben a visszatérési érték False lesz.
function CheckPrime(i: integer): boolean;
var
x: integer;
begin
result:=true;
for x:=2 to i-1 do
Az i változóban kapott értéket a 2-től i-1 értékig tartó számokkal elosztjuk, majd megvizsgáljuk az osztáskor kapott maradékot. Figyeljük meg, hogy 1-el és önmagával, azaz i értékével nem osztjuk el a számot, hiszen ez a két érték biztosan megvan maradék nélkül minden számban.
if i mod x=0 then
begin
result:=false;
Amennyiben a maradék nulla, a szám biztosan nem prímszám, hiszen 1-en és önmagán kívül más számmal is osztható maradék nélkül. A függvény visszatérési értéke False lesz.
A Kilistázás gombra kattintva a ListBox-ban megjeleníthetjük az összes olyan prímszámot, mely a beállított Min és Max értékek közé esik.
Egy For cikluson belül meghívjuk a fenti függvényt. A ciklus a két beállított végérték közötti számokat adja értékül a függvénynek.
ListBox1.Clear;
min:=MinSpin.Value;
max:=MaxSpin.Value;
A ListBox1 kiürítése után a min változónak a MinSpin-ben, míg a max-nak a MaxSpin-ben beállított értéket adjuk át.
for x:=min to max do
if CheckPrime(x)=True then
ListBox1.Items.Add(IntToStr(x));
Amennyiben a CheckPrime függvény True visszatérési értéket szolgáltat, azaz a vizsgált szám prímszám, hozzáadjuk azt a ListBox1 elemeihez.
Lehetőségünk van egy általunk megadott számról is megállapítani, hogy az prímszám-e, sőt, amennyiben az a megadott tartományon belül esik, a ListBox automatikusan arra az elemre áll. Írjuk hát be az érték helyére a vizsgálandó számot, majd nyomjuk le a Keres gombot.
Ekkor a következő kód fut le:
ListBox1.Clear;
min:=MinSpin.Value;
max:=MaxSpin.Value;
try
y:=StrToInt(Value.Text);
Az általunk megadott értéket az y változóban eltároljuk. Ezután elvégezzük a megadott tartományra, majd a megadott értékre a vizsgálatot.
for x:=min to max do begin
if CheckPrime(x)=True then
ListBox1.Items.Add(IntToStr(x));
end;
Ha a megadott szám prímszámnak bizonyul, kikeressük a megadott tartományból az alábbiak szerint.
if CheckPrime(y)=True then
ListBox1.ItemIndex:=ListBox1.Items.IndexOf(IntToStr(y))
else
Amennyiben a vizsgálat szerint a megadott szám nem prímszám, a felhasználónak üzenetet küldünk.
ShowMessage('A vizsgált érték nem prímszám!');
except on EConvertError do begin
ShowMessage('A keresett érték csak egész szám lehet!');
Amennyiben nem egész számot írtunk be, figyelmeztetést kapunk.
Value.Text:='';
end;
end;