fresserettich
Here to stay
|
genau das soll ja des int-array machen @atrox genau das meine ich auch ein guter algo steht auf der hp wo du den link gepostet hast eine optimierte version davon nutzt auch gpis und die haben auch die letzten primzahlen geknackt (der ist jedoch nicht so besonders schnell) nur wenn wir den selben benutzen dann sind mir mit sicherheit 2ter weil die einfach viel mehr nutzer haben wenn ich in zimmski richtig verstanden habe hätte er eine effiziente lösung das problem ist nur bis wir mal starten können würde imho ziemlich viel zeit vergehen
|
Ringding
Pilot
|
Ihr meint, ihr habt einen schnelleren Algorithmus als auf http://www.mersenne.org ? Interessant... Deren Zeug ist so krank optimiert und getuned, da muss einem schon was sehr geniales einfallen, damit man noch schneller wird.
|
atrox
in fairy dust... I trust!
|
mersenne-primzahlen sind ja auch ein spezialfall - dafür gelten eigene gesetze (siehe mein post mit dem wikipedia link)- die die arbeit wesentlich erleichtern im vergleich zu allgemeinen primzahlen.
es könnte also durchaus nicht falsch sein, sich den gimps-clientcode herzunehmen, und ihn so umzubauen, daß er speziell nach M-zahlen > 10^(10^7) sucht.
|
zimmski
Bloody Newbie
|
ich hab nicht behauptet das es schnellere als andere algos ist... aber ich hab mir hald dass noch dazu überlegt: also wenn man herausfinden will ob eine zahl ein primzahl ist muss man sie durch alle anderen primzahlen dividieren welche kleiner als sie ist... dann gibts noch ne kleine verbesserung das man einfach nur di hälft von den primzahlen nimmt und sogar ein drittel geht auch noch.... so ich hab mir aber was anderes überlegt .. wenn man sich schnell eine primzahl tabelle mach in excel und dann noch di hochrechnungswerte bis hoch 4 hinschreibt... kann man herausfinden das man zahlen bis 3000 nur mit 2,3,5,7,11,13..57, 59 wenn ich mich nicht verrechnet habe.. und mehr sind das nicht... wenn wir jetzt einfach eine tabelle machen mit allen hochgerechneten primzahlen di mehr als 10mil zeichen haben müssen wir nichtmehr dividieren sondern müssen nur noch vergleichen .. und das geht ja schneller das gibts nämlich auch noch ein paar tricks..... versteht ihr was ich meine?  jamjamjam
|
Ringding
Pilot
|
Alles kein Problem!  Weißt du eh, wie viele solche Zahlen es gibt? Die Anzahl der Atome im Universum ist winzig verglichen mit der Anzahl derartiger Primzahlen...
|
atrox
in fairy dust... I trust!
|
bin mir bei deinem text jetzt nicht bei allen punkten sicher was du meinst, es ist natürlich klar, daß du, wenn du eine zahl n prüfen willst, nicht durch alle primzahlenzahlen [2..n] dividieren mußt, sondern nur durch [2..√n] es gibt eine formel, die dir hilft abzuschätzen, mit wievielen primzahlen du es zu tun haben wirst: http://www.mathpages.com/home/kmath032.htm
|
fresserettich
Here to stay
|
ich glaube dass in zimmski sein algo schneller ist aber nur bis der algo mal lauffähig ist dauert seine zeit und zimmski bedenke folgendes es gibt keine garantie dass es eine zahl mit 10 mio stellen gibt sie kann auch größer sein
|
Geigerzeiger
Addicted
|
wie wär es wenn wir so eine art benchmark realisieren, der 8moi stellige primzahlen berechnet. Der algorithmus wär eh nicht so schlecht
|
zimmski
Bloody Newbie
|
ok i erklärs nochmal kurz wie meine idee ist.. zuerst macht mal meinen anhang auf.. da is ne liste mit primzahlen und hochrechnungen... jez rechnen wir einfach alle primzahlen di benötigt werden auf ne zahl di mehr als 10mil stellen hat.... damit kann man dann di zahl vergleichen und vergleichen geht verdammt schnell und wenn man einmal eine liste hat mit solchen zahlen kann man ja falls notwendig si noch ein bischen erweitertn also zB wenn man 2hoch irgendwas für 11mil stellen braucht einfach solange mit 2 mulitplizieren bis man 11mil stellen hat...
und i schätz schon das mindestens EINE primzahl gibt di 10 mil stellen hat..
liste_45888.gif (downloaded 75x)
|
atrox
in fairy dust... I trust!
|
ich stehe jetzt irgendwie auf der leitung - aber versuchen wir es mit einem einfachen beispiel: nehmen wir an, ich suche eine primzahl mit 5 oder mehr stellen, wie gehe ich da laut deiner tabelle vor?
und wie verifizierst du die erste spalte der tabelle ohne zu dividieren ? und wird die tabelle nicht sehr schnell irsinnig groß, wenn jede zahl darin mehrere megabyte groß ist ? und: wenn ich eine primzahl mit irgendwas multipliziere, ist sie keine primzahl mehr - was hab ich übersehen ?
|
fresserettich
Here to stay
|
ok ich machs mit einem ganz einfachen beispiel: es soll überprüft werden ob die zahl 16 und 17 eine primzahl ist: man weiß 2 ist eine primzahl also rechnet man 2*2=4 usw. des gleiche bei 3 für 5 ,... alle diese ergebnisse stehen in einer liste: man fängt an mit diesen wertern zu vergleichen dann wirst du feststellen dass 16 eine form von 2 * n ist --> keine primzahl 17 wirst du nicht finden also ist es eine primzahl ich sagte ja der algo braucht verdammt viel ressourcen und es ist ein langer weg bis man sie hat aber dann ist er verdammt schnell man kann ja noch ein bisschen optimieren ich hoffe es ist jetzt klar
|
Ringding
Pilot
|
Ist 6 dann auch eine Primzahl? Es ist ja weder 2*2 noch 3*3.
|
zimmski
Bloody Newbie
|
nein. 6 ist nur eine hochrechnung von 2. also is 2 der teiler. ergo nix primzahl.....
ich mein wenn man so ne tabelle mach dann geht hald für ne zahl 11mb drauf.. mir egal der speicherverbrauch ist mir echt wurst! hauptsache es geht schnell.. und di tabelle fangt ja erst bei zahlen mit 10mil stellen an...sollte sie zumindest
|
SoulFly
Bloody Newbie
|
so ... ich arbeite an dem ganzen auch mit (ich bin für den server zuständig) ... und da hab ich mir gestern überlegt wie man einen zahl mit 11 mil. stellen an einen client versenden kann: mhm ... es gibt 2 wege ... 1. Binär: 4,6 Mb (zu groß für eine 56k Leitung) 2. String: 11 Mb (auch zu groß ...) frustriert hab ich das verworfen und hab ein bisschen mit einer zip library gespielt und als ich fertig war, hab ich zum testen die txt datei verpackt die 11mb hatte ... und siehe da: die zip ist 27,1 KiloByte groß!  ... ich zip die textfile einfach und versende sie dann *äähää* ... und der client - für den ich auch wahrscheinlich zuständig bin (wer sonst kann schon meine librarys benutzen) - muss das teil wieder entpacken ... ich hab mir dann ein paar zip libraries besorgt und deren packungs geschwindigkeit berechnet: -- addZIP (die allererste version): 1 Sekunde und 30 MlSec -- BSZip: 2 Sekunden irgendwas -- QuickZip: 3 Sekunden und 50 MlSec ich nehm jetzt die addZIP und führe damit ein paar tests durch ...
|
that
Hoffnungsloser Optimist
|
ich mein wenn man so ne tabelle mach dann geht hald für ne zahl 11mb drauf.. mir egal der speicherverbrauch ist mir echt wurst! hauptsache es geht schnell.. und di tabelle fangt ja erst bei zahlen mit 10mil stellen an...sollte sie zumindest Es gibt rund 10^10000000 Zahlen mit 10 Millionen Stellen. Wenn du davon auch nur 0,1% in einer Tabelle speichern willst, viel Glück. Sogar ein Yottabyte wäre "nur" 10^24 (also eine Billion Terabyte), und darüber gibts nichtmal mehr Worte für die Einheiten. Zum Vergleich: Die Datenbank von Google hat angeblich ca. 2 Petabyte.
|