bin neu hier. Ich habe Windows7 und Lazarus 1.0.4
In einer Anwendung zur numerischen Berechnung werden bestimmte Zahlen auf prim geprüft.
In einer Schleife werden zunächst 10000 Zahlen durchlaufen. Erhöht man die Schleife auf 1 Mio (also 1000000)
gibt es in der isprime Funktion eine Exception in der Sqr(n) Funktion. Die Anwendung stürzt ab. Daraufhin werden neue Berechnungen im absoluten Schneckentempo abgearbeitet.
Ich habe das Gefühl, dass mein System irgendwo einen Hau weg hat. Die Grafikkarte hatte danach nur noch 3 Auflösungsmöglichkeiten ????
Also test am besten auf einem alten System
Auf einer grafischen Oberfläche oder Konsolenanwendung
habe ich folgende Funktionalität (z.B. hinter einem Button_Click)
Code: Alles auswählen
for i := 2 to 100000 do
begin
q := i * i;
n := q + (i - 1);
p := False;
p := isprime(n);
end;
Die Funktion isprime sieht wie folgt aus:
Code: Alles auswählen
function isprime(zahl: LongInt): boolean;
var i: Longint;
var z: real;
var erg: Longint;
begin
i:=0;
if (zahl mod 2 = 0) then //alle geraden Zahlen ausser 2 ausschliessen - verdoppelt die Geschwindigkeit
begin
if (zahl = 2) then
begin
exit(True);
end
else exit(False); //gerade zahlen ausschliessen
end;
i := 3;
[color=#FF0000] z := Sqr(zahl);[/color]
repeat
begin
erg := zahl mod i;
if( erg = 0) then
begin
exit(False);
end;
i := i + 2; //nur jede 2 Zahl
// ShowMessage(IntToStr(i));
end;
until i > z;
isprime := True; //ansonsten war kein Teiler da --> prim = true
end;