HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Prímszámkereső program


Példaprogram letöltése

3998 bájt

Prímszámoknak nevezzük azokat a számokat, melyek csak önmagukkal és 1-el oszthatók maradék nélkül. Többször előfordulhatott már, hogy szerettük volna megállapítani egy számról, hogy az prímszám-e vagy sem. Készítsünk hát egy programot, mely mindezt megteszi, sőt, két megadott tartomány között az összes prímszámot is kilistázza.

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.
      break;
    end;
end;
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;

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 428. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |