![]() |
Sieb des Eratosthenes
Liste der Anhänge anzeigen (Anzahl: 1)
Dieser Beitrag
![]() und dieser ![]() Tja, "ein wenig" ist untertrieben, ich kam vom hundertsten zum tausendsten, aber ich denke das Ergebnis ist ganz brauchbar, auch wenn ich mit dem Zeitverhalten bei der Sieberstellung noch nicht so ganz zufrieden bin - etwas bummelig für meinen Geschmack. Im Anhang sind eine 32 Bit Version und eine 64 Bit Version meines Programms sowie drei Help-Dateien, Help.docx, Help.pdf, Help.mht, die über die Hilfe Funktion des Programms aufrufbar sind, solange sie sich im selben Verzeichnis befinden, wie die .exe. Die Help Dateien sind inhaltlich identisch - aber jeder hat ja seine persönlichen Vorlieben. Die 32 Bit Version kann Siebe bis max 2 ^ 32 - 1 erstellen, die 64 Bit Version bis 200 Giga - wenn genug Ram verfügbar ist. Ich habe mich bemüht, alle Fehler zu finden - da ich aber weiß, wo die Juckepunkte sind, habe ich mich auf diese konzentriert und wahrscheinlich die simpelsten Ungereimtheiten übersehen. Wer also Fehler findet, bitte Info in diesem Thread oder als PN. Ich empfehle, die Help-Datei zumindest querzulesen. |
AW: Sieb des Eratosthenes
Hallo,
ich habe gerade die 32-Bit Version Primesieve32 ( Win7 ) getestet und erhalte: Schon beim Start "External Exception C0000001D" Bei MAX = 1e9 passiert das scheinbar mit jeder neuen Siebzahl, die beim Sieben eingeblendet wird, aber auch wenn ich das Tausender-Trennzeichen umstelle. Dubios das. ![]() Ohne Sourcen mußt Du es wohl selbst entdecken ;-) Gruß Horst |
AW: Sieb des Eratosthenes
Keine Quellen? Wozu dann das Ganze?
|
AW: Sieb des Eratosthenes
Zitat:
Kann ich bei mir nicht nachvollziehen. Daher ein paar Fragen: Wenn du sagst "Schon beim Start "External Exception ..." , meinst du dann gleich wenn du das Programm startest, oder wenn du die Erstellung des Siebs startest? Wenn du sagst "Bei MAX= 1e9 ...", meinst du dann, die Exceptions kommen bei der Erstellung des Siebs oder bei der Anzeige der Zahlen in der Liste ganz rechts? Und: wie ist das kleineren Werten? Läuft das bei dir als Single-Thread oder als Multi-Thread? Anders gefragt: Welche Zahl steht in der Statusbar im dritten Panel von rechts? Last, not least: Welche CPU hat dein Rechner. (External Exception C0000001D heißt Illegal Instruction, es könnte also gut sein, dass ich einen Assembler Befehl nutze, den die CPU nicht "kann" - eher unwarscheinlich, aber möglich). Wieviel Ram ist verfügbar. Danke für Deine Mithilfe. |
AW: Sieb des Eratosthenes
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
AMD Phenom X4 955, Win7. Schon zum Start kommt die Fehlermeldung. Bei Ausführen dann extrem oft.Das II.te Bild ist bei 4E9 single Thread. Heute morgen war es 4-fach thread. Aus ![]() Zitat:
|
AW: Sieb des Eratosthenes
Gibt es einen Grund, uns den Quellcode vorzuenthalten?
Meinst Du, das sei ein Mehrwert für die Menschheit, den man zu Geld machen kann? |
AW: Sieb des Eratosthenes
Ich nehm mal an, daß Amateurprofi den Algo von sx2008 benutzt. Hätte mich auch mal interessiert, ob Amateurprofi diesen um Faktor 2 beschleunigt hat, denn das Sieb braucht die geraden Zahlen ja nicht. ;)
|
AW: Sieb des Eratosthenes
Zitat:
Lass mal das von sx2008 laufen. Und dann das von mir. |
AW: Sieb des Eratosthenes
Ich hab hier ein altes TP-Sieb ausgegraben:
Delphi-Quellcode:
program Project2;
{$APPTYPE CONSOLE} uses SysUtils; const LOOPEND= $FFFFFFF; var sieb : array [0..LOOPEND] of byte; i,j,lauf : longint; start, ende : tdatetime; begin writeln (' Sieber'); fillchar(sieb,sizeof(sieb),#0); start:=time; i:=2; while i < (LOOPEND shr 1) do begin j:=i *2; while j <= LOOPEND do begin; sieb[j] := 1; inc(j,i); end; repeat inc(i,1); until sieb[i]=0; end; ende:=time; j:=1; for i:=1 to loopend do if sieb[i]=0 then inc(j,1); writeln(' im Bereich von 0 bis ',formatfloat('0,',loopend/1),' habe ich ',j,' Primzahlen gefunden!'); writeln('Ben”tigte Zeit:',formatdatetime('HH.MM:SS:HH:ZZZ',ende-start)); readln; for i:=1 to 20 {LOOPEND} do begin if sieb[i]=0 then write(i:8); end; readln; end. Die reine Rechenzeit für ca 250 Mio liegt bei ~15-16sec Gruß K-H |
AW: Sieb des Eratosthenes
Für 250 Mio braucht meins (bei mir - Intel I7) etwa 600ms, und das ist nicht nur die Rechenzeit.
Ich schrieb ja, das es etwas bummelig ist und dass ich mit dem Zeitverhalten nicht so ganz zufrieden bin. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 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