calculate prime number/de
From Lazarus wiki
Jump to navigationJump to search
│
Deutsch (de) │
Zurück zur Seite Code Beispiele.
Dieses Beispiel enthält zwei Unterprogramme. Eines prüft, ob es sich bei der übergebenen Zahl um eine Primzahl handelt.
Das andere Unterprogramm ermittelt mit Hilfe des ersten Unterprogramms ein Array mit Primzahlen, dessen Start- und Endezahl der Prozedur nach Belieben übergeben werden können.
Die Funktionen laufen nur unter 64 Bit. Damit die Funktionen auch unter 32 Bit laufen, muss der Datentyp QWord durch den Datentyp Cardinal ersetzt werden.
uses
SysUtils, ...;
...
implementation
...
// Diese Funktion prüft, ob eine Zahl eine Primzahl ist
function funIsPrim(qwdGanzzahl: QWord): boolean; inline;
var
qwdI: QWord;
begin
Result := False;
for qwdI := 2 to Round(Sqrt(qwdGanzzahl)) do
if qwdGanzzahl mod qwdI = 0 then
exit;
Result := True;
end;
// Diese Funktion ermittelt alle Primzahlen aus einem bestimmten Bereich
procedure subPrimArray(qwdVon, qwdBis: QWord);
var
qwdI: QWord;
arrPrim: array of Qword;
begin
// Legt die Anfangsgrösse des Arrays fest
SetLength(arrPrim, 0);
for qwdI := qwdVon to qwdBis do
begin
if funIsPrim(qwdI) = True then
begin
// ändert die Grösse des Arrays
SetLength(arrPrim, High(arrPrim) + 2);
arrPrim[High(arrPrim)] := qwdI;
end;
end;
end;
...