Brute-Force Methode(Prüfer) Turbo Pascal

aus Paswiki Turbo Pascal, der freien Wissensdatenbank

Inhaltsverzeichnis

Beschreibung

Dies ist ein in der Programmiersprache Turbo Pascal geschriebenes Programm. Es wird überprüft, ob die angegebene Zahl eine Primzahl ist !

Hier auf Paswiki gibt es neben den vielen ausgestellten Programmen auch noch einige weitere Turbo Pascal Programme die sich mit Primzahlen beschäftigen z.B. Primzahlen Auflister nach der Brute Force Methode oder Primazahlen Auflister nach der Methode des Siebs von Eratosthenes

Programm

Version I

Die Version I ist ein reiner Primzahlenprüfer und kann Zahlen bis 10^19 in geringer Zeit überprüfen.

Diese obige Version ist wesentlich schneller als die untere Version II , da sie nicht alle möglichen Teiler der Zahl zurückliefert, sondern nach dem ersten Gefundenen abbricht.

program primzahlen;
{$N+}   {Laesst den Koprozessor mitrechnen,=> geht schneller}
var   treffer,zahl,n:extended;


begin
writeln('Welche Zahl soll geprueft werden ?');
writeln('bis 10 ^ 19...');
readln(zahl);
writeln;
n:=1;

repeat
n:=n+1;

if (frac(zahl/n)=0) then
begin
writeln('z.B.: ',n:0:0,' ist ein Teiler');
writeln;
writeln('=>');
treffer:=1;
break;
end;

until n>round(sqrt(zahl));

if treffer=1 then begin writeln(zahl:0:0,' ist keine Primezahl !!!   ');
end
else write(zahl:0:0,' ist eine Primzahl !!!');

readln;
end.

Version II

Die Version II ist eigentlich nicht für reine Primzahlenüberprüfung geeignet. Sie liefert alle Teiler der Zahl zurück und dauert dementsprechend länger. Es sind Zahlen bis zu einem Wert von 2,1 Mrd möglich.

program primzahlen;
{$N+}   {Laesst den Koprozessor mitrechnen,=> geht schneller}
uses crt,dos;
var   treffer:longint;
 zahl,n:longint;
 s,teiler,teiler_n:string;

begin
writeln('Welche Zahl soll geprueft werden ?');
readln(zahl);

for n:=2 to (round(zahl/2)+1) do
begin

if (zahl mod n)=0 then begin
str(n,teiler_n);
teiler:=teiler+teiler_n+'-';treffer:=treffer+1;end;

end;

if treffer >= 1 then begin writeln(zahl,' ist keine Primezahl !!!   ');writeln(zahl,' : ',teiler);
end
else write(zahl,' ist eine Primzahl !!!');
readln;
end.

--Gastarbeiter 19:00, 27. Feb 2006 (CET)


'Persönliche Werkzeuge
Extras