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)
