Difference between revisions of "calculate prime number/de"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category already in page template)
 
Line 1: Line 1:
 
{{calculate prime number}}
 
{{calculate prime number}}
<br>
+
 
Zurück zur Seite [[code examples/de|Code Beispiele]].<br>
+
Zurück zur Seite [[code examples/de|Code Beispiele]].
<br>
+
 
Dieses Beispiel enthält zwei Unterprogramme. Eines prüft, ob es sich bei der übergebenen Zahl um eine Primzahl handelt.<br>
+
 
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.<br>
+
Dieses Beispiel enthält zwei Unterprogramme. Eines prüft, ob es sich bei der übergebenen Zahl um eine Primzahl handelt.
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.<br>
+
 
<br>
+
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.
<syntaxhighlight>
+
 
 +
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.
 +
 
 +
<syntaxhighlight lang="pascal">
 
uses
 
uses
 
   SysUtils, ...;
 
   SysUtils, ...;
Line 60: Line 63:
  
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
 
<br>
 
--[[User:Olaf|Olaf]] 05:14, 21 May 2013 (UTC)
 
 
 
{{AutoCategory}}
 
[[Category:Code Snippets/de]]
 
[[Category:Mathe/de]]
 

Latest revision as of 00:37, 11 February 2020

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;

  ...