Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Primzahlen-Programm

  Alt 1. Dez 2015, 17:43
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)

Geändert von Sir Rufo ( 1. Dez 2015 um 17:47 Uhr)
  Mit Zitat antworten Zitat