Als erstes solltest du planen, dir eine
eigene IsPrime
Funktion zu schreiben.
Delphi-Quellcode:
function IsPrime( Value : Int64 ) : Boolean;
begin
Result := ( Value mod 2 = 0 ); // Ein Fake
end;
procedure TForm1.Button1Click(Sender: TObject);
const
CBoolStr: array[Boolean] of string = ['keine', 'eine'];
begin
Label2.Caption := Format( 'Das ist %s Primzahl', [CBoolStr[ IsPrime( Strtoint( Edit1.Text ) ) ] );
end;
Dann überlegen wir uns mal, wann ist eine Zahl eine Primzahl?
Wenn diese nur durch sich selbst oder 1 ohne Rest teilbar ist.
Gut, dann machen wir das doch mal
Delphi-Quellcode:
function IsPrime( Value : Int64 ) : Boolean;
var
lIdx: Int64;
begin
// Wir berechnen Primzahlen nur, wenn die größer als 0 sind
if Value <= 0 then
raise EArgumentException.CreateFmt( 'Value %d must be greater than zero!', [Value] );
// Wir prüfen nicht den Wert selber und auch nicht die 1
for lIdx := Value - 1 downto 2 do
begin
// Ist der Wert ohne Rest teilbar?
if Value mod lIdx = 0 then
begin // dann ist es keine Primzahl
Result := False; // also ist es False
Exit; // und wir können Feierabend machen
end;
end;
// Wenn wir bis hier kommen, dann ist es eine Primzahl
Result := True;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)