![]() |
Zahlen gesucht
Wie kann ich ganz schnell und einfach rieseige Primzahlen erzeugen? Um zu checken, ob's eine ist, bruacht man ja ziemlich lange und 2^x-1 lifert mir nicht genug Primzahlen...... könnt ihr mir helfen?
MfG gecko2000 |
hoffe es hilft trotzdem
was heißt schnell...
ich hab ne procedure, die dir Primzahlen ermittelt... musst mal gucken, ob dir das reicht....
Delphi-Quellcode:
hab ne gauge1 drin (weil es für große zahlen echt ne weile dauern kann
procedure Primzahlen;
var prim: boolean; i,k: integer; begin listbox1.Clear; i:=2; gauge1.maxvalue:=strtoint(edit1.text); gauge1.progress:=0; while i<=strtoint(edit1.text) do begin prim:=true; if i>2 then begin for k:=i-1 downto 2 do begin if (i mod k)=0 then prim:=false; application.processmessages; end; end; if prim then listbox1.Items.add(inttostr(i)); inc(i); gauge1.progress:=i; end; end; als anzeige drin) in das edit fehlt schreibst du die zahl, bis wohin du die primzahlen haben willst. und in die listbox werden dir dann alle geschrieben... man könnte auch mit dem heap arbeiten und so schneller voran kommen, aber ich denke es kann schnell zu einem stack-überlauf kommen... aber sonst kannst du ja noch mal schreiben Gruß BC |
1.Besserung
also ich seh ein es gibt ne kleinigkeit die man verbessern kann:
Delphi-Quellcode:
Ab Zahlen von 15000 macht sich das sehr spürbar...
procedure Primzahlen;
var prim: boolean; i,k: integer; begin form1.listbox1.Clear; i:=2; form1.gauge1.maxvalue:=strtoint(form1.edit1.text); form1.gauge1.progress:=0; while i<=strtoint(form1.edit1.text) do begin prim:=true; if i>2 then begin k:=0; while (k<form1.listbox1.items.count) and (i>=strtoint(form1.listbox1.items[k])*2) and prim do begin if (i mod strtoint(form1.listbox1.items[k]))=0 then prim:=false; application.processmessages; inc(k); end; end; if prim then form1.listbox1.Items.add(inttostr(i)); inc(i); form1. gauge1.progress:=i; end; end; P.S.: wenn jemand noch nen schnelleren Algorithmus findet wär ich sehr dankbar wenn mir den jemand mal schicken könnte... |
echte primzahlen wird schwer. aber such mal bei google nach pseudoprimzahlen...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz