Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#64

Re: Sehr schneller Primzahl-Finder

  Alt 23. Aug 2005, 22:02
@alzaimar:

damals gabs wikipedia nach garnicht. Das einzigste was ich finden konnte, durch einen Tipp eines anderen Programmierers, war die mathematiche Abhandlung von D.J.Bernstein. Mein oben geposteter Source ist nunmehr die dritte Neuimplementierung, die erste habe ich wohl vor 8-10 Jahren programmiert.
Der Source den man jetzt im Wiki findet ist ein C Code und ein Sieb bis 2^63 wie es scheint. Er arbeitet nach der Atkin's Methode, das ist richtig, aber denoch muß man in solchen Zahlenbereichen natürlich auch ganz andere Algorithmen benutzen. Mein Sieb arbeitet wie in D.J.Bersteins PostScript nur bis 2^32. Denoch danke für den Tipp, denn nun habe ich sogar eine Referenzimplementierung um mein gescheitertes 2^64 Sieb neu zu überprüfen.

Klar, auch ich habe _abgekupfert_, und wie ich oben geschrieben habe, muß jegliche Inmplementation des gleichen mathematischen Verfahres auf kurz oder lang ähnliche Muster aufweisen. Allerdings war ich denoch sehr überrascht das sich die finalen Umsetzungen sich so gleichen wie ein Ei sich dem anderen Ei gleicht.
_abgekupfern_ ist aber immer zweischneidig zu betrachten. Ich zb. habe mit Hilfe der doch relativ komplizierten mathematischen Abhandlungen von Bernstein die Sourcen komplett neu und selber geschrieben. Somit habe ich mir mathematisches Wissen angeeignet und meine eigene Implementierung geschrieben. Man kann aber eben auch _abkupfern_ indem man einen existenten Fremdsource nimmt und diesen als den eigenen ausgibt. Leider scheint dies heutzutage eben keine Ausnahme von der Regel zu sein, sondern eben umgekehrt.

Bisher, und es wäre schön wenn du mir das Gegenteil beweisen könntes, kenne und kannte ich eben keine einzigste PASCAL/Delphi Implementierung dieses Siebes.


@Penis-Längen-Vergleich: Ich wollte dieses Thema eigentlich abhacken, aber nun nochmal.
Es ist doch ein menschliches Bedürfnis sein Können unter Beweis zu stellen. Im grunde habe ich es nicht nötig hier meine Sourcen und ergo auch Zeit zu investieren. Der einzigste Grund warum ich dies tue ist damit andere Programmierer aus meinen Erfahrungen lernen können. Dafür kann ich einen gewissen Respekt erwarten.
Wie das Thema dieses Threads schon andeutet -> "Sehr schneller Primzahl-Finder" mit der inhaltliche Angabe eines normalen Sieb des Erstothenes ist es sehr wohl gerechtfertig darauf hinzuweisen das dies wohl einer der langsamsten Tests überhaupt ist. Als Beweis setze ich mich hin, entpacke und suche meine alten Source um hier dann diesen zu posten. In diesem Moment sind sehr wohl Laufzeitvergleiche sinnvoll. Also was gibts dagegen einzuwenden, wenn man fundiert die erzielte Effizienz vergleicht ?

Ich habe nun bei solchen Kommentaren drei Möglichkeiten zu reagieren:
1.) ich ignoriere es und verändere somit rein garnichts im Bewusstsein der Menschen
2.) ich ziehe mich hier aus der DP zurück und behalte mein Wissen für mich.
Allerdings geht so auch Wissen verloren das ehrlich Antwortsuchende eben nicht erhalten können. Schlußendlich kenne ich meinen Wissens- und Erfahrungsstand sehr genau und das was ich für mich persönlich damit erreichen wollte habe ich auch erreichen können. Aus dieser Sichtweise könnte es mir egal sein ob ich mein wissen für mich behalte oder hier mit anderen teile.
3.) ich reagiere selbstbewusst, argumentiere und hinterfrage die Intention des Störenfriedes. Ich setze ihm ganz öffentlich Grenzen, Grenzen die er überschritten hat. Ich mache dies dann aus mehreren Gründen, eben um deutlich zu zeigen "mit mir nicht !", um anderen zu zeigen wo diese Grenzen liegen, um andere anzuregen es mir gleichzutuen und ihre sozusagen gesellschaftliche Verpflichtung eines vernünftigen und respektvollen Umganges durchzusetzen.
Das mache ich dann absichtlich deutlich überzogen, denn sollte ich es nicht machen, so würden eben gerade die ehrlichen Leute die wirklich auf der Suche nach Wissen sind darunter leiden.

Eine Unterstellung eines "Penis-Vergleiches" erachte ich also als eine persönliche Beleidigung. So eine Unterstellung impliziert gleichermaßen das mein Wertemaßstab in meinem persönlichem Umgang mit Menschen und/oder meine Bewertung meiner Mitmenschen durch mich, ein Maßstab ist der rein garnichts mit deren Charakteren, Fähigkeiten, Fertigkeiten und Leistungen zu tuen hat. Er impliziert das ich ein Mensch bin dessen einzigster Maßstab den er an Menschen anlegt ein Maßstab ist der aus Sexuellen Neigungen, der Leistung des Autos oder der Anzahl der Frauen wäre, sprich also oberflächlich.

Zitat:
Dann habe ich die redundanten Berechnungen rausgenommen (k*Primelen, k*Primebits, i*30 etc.). Ergebnis: 30% Performance-EINBRUCH. Vielleicht bin ich ja ein Kaschperl und einfach zu blöd dazu, und Du bekommst es besser hin... Ich habe mir bei dieser Diskussion hier jedenfalls angewöhnt, erst alles zu testen, bevor ich das Maul aufreisse.
Das ist auch eine gute Idee, es so zu handhaben.
Meine obigen Vorschläge der Optimierungen sind auch nicht als Fakten und funktioneerende Lösungen zu betrachten, sondern einfach nur Vorschläge wie ich an die Sache noch herangehen würde.
Das es aber schneller geht ist unbestritten, es muß schneller gehen. FLoatingpoints sind immer langsammer als Integer Berechnungen, dies ist nunmal fakt wenn man sich die CPU Zyklen der heutigen CPU's genauer unter die Lupe nimmt. Erschwerend kommt hinzu das ein gemischter Code aus Integer/Floating-POint Berechnungen, oder zusätzliche Zugriffe auf Lookup Tabellen nachweislich die Gesamtperformance auf Grund von WaitStates, Cachemisses etc.pp. auf modernen CPU's negativ beeinflußen. Dies sind keine Weisheiten sondern bekannte Tatsachen. Ergo: sind mein Optimierungsvorschläge sehr wohl fundiert. Und das es schneller gehen kann zeigt ja mein eigener Source.

Gruß Hagen
  Mit Zitat antworten Zitat