Autor Beitrag
lemming
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mo 12.08.02 14:17 
Hallo!

Ich habe ein kleineres Projekt vor. Ihr kennt doch sicherlich SETI@home. Manche von euch kennen doch sicherlich auch sowas ähnliches nur mit der Forschung nach Primzahlen statt Aliens.

Nun ich will auch sowas mit Primzahlen machen. Server programmieren ist nicht das Prob, das'n Mini Script in Perl.

Mein Problem ist ganz banal! Ich kann mit Delphi nur Zahlen bis maximal 9.223.370.000.000.000.000 (Int64) nach Primzahlen untersuchen.

Das scheint am Anfang eine Menge holz zu sein, aber nach meiner Rechnung nach dürfte das mit einem Rechner (AMD Athlon 700) bereits in zwölf Monaten fertig gerechnet sein.

Ich möchte aber mindestens 128Bit also doppelt soviel wie mit Int64 bearbeiten können. Das würde für einen Rechner schon ~16.129 Monate dauern. Noch besser wäre da natürlich unendlich grosse Zahlen, schliesslich ist darauf unser Zahlensystem aufgebaut.

Gruss lemming
Millo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 147



BeitragVerfasst: Mi 14.08.02 13:51 
Titel: THugeNumber
Hi

Ich hab grad von THugeNumber gelesen. Es soll mit speicherbeliebig großen Zahlen umgehen können. Ich suche grad selbst noch mehr Info.
wurde von Robert Craven entwickelt.

Kannst ja bescheid sagen wenn du was findest
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 14.08.02 14:23 
Hi,

die Kompo findest du auf Delphi-Treff.

Gruß
Klabautermann
Millo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 147



BeitragVerfasst: Mi 14.08.02 14:28 
Titel: bellibig Große Zahlen
Moin

Danke für den Link, aber sie scheint ja einen Hacken zu haben da sie nur +,-,* rechnet weiss du ob es was gibt mit dem man so ziehmlich alles rechnen kann
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mi 14.08.02 14:51 
Danke, das sowas habe ich gesucht. Leider verkraftet die Unit eine Rechenoperation mit 500.000 Stellen nicht :(

Leider brauche ich auch NUR die Division.
Millo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 147



BeitragVerfasst: Mi 14.08.02 15:13 
Titel: Andere Sprachen
@lemming

Moin hast du schon mal geguckt ob das nicht vielleicht in anderen Sprachen möglich ist . Ich könnte mir gut vorstellen das vielleicht assembler deinen Anforderungen entspricht. (bin mir nicht sicher).
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mi 14.08.02 15:24 
@Millo. Assembler ist bei mir schon etwas länger her. Aber die idee ist mir noch gar nicht gekommen. Danke! Ich möchte ja ein Programm schreiben das herausfindet ob eine Zahl eine Primzahl ist oder nicht. Diese Zahlen haben so ungefähr 4 Millionen Stellen. Also unglaublich viele. Deswegen werde ich wahrscheinlich tricksen müssen und die Division die ich vorhabe wie in der Schule ausrechnen müssen. Nur eben mit 4 Millionen Stellen ;)

Trotzdem danke für den Schupps.
Millo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 147



BeitragVerfasst: Mi 14.08.02 16:17 
@lemming

Darf man eigentlich mal fragen welchen tiefereen Sinn du damit verfolgst.
Oder machst du das nur so, weil einen rechner 1/2 Jahre laufen zu lassen ist ja nicht ohne nur damit man ein paar Zahlen ausrechnen kann.
Und hast du eigentlich schon mal an eine Absicherung gedacht falls dein rechner abstürtzt weil sonst musst du ja alles noch mal von vorne machen.
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Do 15.08.02 11:44 
Hat überhaupt etwas einen tieferen Sinn? ;)

Scherz beiseite. Ich hab evtl. vor den Rekord mit der höchsten bekannten Primzahl zu brechen. Die hat eben soviele Stellen.

Das könnte natürlich nicht ein Rechner allein bewerkstelligen. Ich müsste die Rechenaufgabe an mehrere rechnr verteilen. Die Z.B. einen Bildschirmschoner laufen lassen und nebenher rechnen. Ala SETI@home.

Klar? :)
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: So 18.08.02 10:18 
PRIMI@home *grins* auch nicht schlecht, das Problem: Datenabgleich!
Wenn nämlich einer seine gefundenen Primzahlen aus irgendeinem Grund nicht abschickt hast du ein Problem, wenn sich der Wert verdoppelt, dein Prgramm gibt dann möglicherweise viel zu viele Primzahlen aus, da ihm ein paar frühere fehlen, dieses Problem bestet bei SETI nicht da es dort egal ist in welcher Reihenfolge die "Sound-Schnipsel" bearbeitet werden.

MathiasH

_________________
"Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: Mo 19.08.02 22:37 
Na dazu muss ich auch meinen Senf abgeben.

1. Assembler nehmen (der Mensch, der die Stromrechnung bei euch im Haus zahlt würde sich darüber auf jeden Fall mächtig freuen)
2. sich möglichst noch in die Materie MMX bzw. 3DNow! einarbeiten, da gibt es spezielle ("höher-mathematischen") Befehle, die der Prozessor in einem Zyklus abarbeiten kann.
3. sich mit der Primzahlentheorie auseinander setzen (Test der Zahl x läuft nur bis sqrt(x), "Probeteiler" der Form 6y-1 und 6y+1 genügen, es gibt keine geraden Primzahlen > 2, uvm.)
4. lieber vorher in einen neuen Rechner investieren, als das Projekt an Heilig Abend abbrechen um mit dem Weihnachtsgeschenk neuzubeginnen ;)

Viel Glück,
DaFox
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 19.08.02 23:15 
Hallo,

lemming hat folgendes geschrieben:
Das könnte natürlich nicht ein Rechner allein bewerkstelligen. Ich müsste die Rechenaufgabe an mehrere rechnr verteilen. Die Z.B. einen Bildschirmschoner laufen lassen und nebenher rechnen. Ala SETI@home.


ich hoffe dir ist bekannt, das es solche Projekte bereits gibt. Auf die schnelle habe ich z.B. GIMPS gefunden.

Gruß
Klabautermann
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Mi 21.08.02 01:14 
Titel: ...
... ok, Du willst also den Rekord der höchsten errechneten Primzahl ermitteln, das seh ich ja noch gerade ein, aber ... WOZU?

Ich will Dir jetzt wirklich nix dreinreden, aber Du solltest vielleicht wirklich überlegen, ob sich der Aufwand dafür lohnt ...

Denn es hört sich fast so an, als müsstest Du Deine eigenen Routinen schreiben, die Zahlen in der Höhe unterstützen und auch dividieren lassen. Viel Spaß, falls Du es mit Delphi probierst ... diese Sprache mag zwar einen schnellen Compiler haben, aber für eine solche Aufgabe ist ein Delphi-Kompiliertes Programm wahrscheinlich nicht so gut geeignet (Geschwindigkeit !!!) ... und noch mehr Spaß, falls Du es in DER Sprache versuchen solltest, mit der solche Aufgaben eigentlich am Besten gelöst werden: Assembler. Ich habe vor langer langer Zeit einmal einen eigenen Floating-Point-Emulator in Assembler geschrieben ... ich weiß zwar nicht mehr genau, wie ich es angestellt habe, ich weiß nur noch, dass es eine enorm unangenehme Aufgabe war :wink: ...

Eine kleine mathematische Frage am Rande : Reicht es nicht eigentlich vollkommen aus, Primzahlen bis zu ... sagen wir 1000 zu berechnen, das Muster herauszufinden und hochzurechnen?
Ich kenne mich in Mathe nicht gut genug dafür aus, um diese Frage beantworten zu können, aber müsste die Primzahlen-Verteilung nicht eine immer-wiederkehrende Struktur aufweisen?
Du könntest die Zahlen bis 1000 in einer Bitmap speichern und dann die Primzahlen markieren, einen PatternMatching-Algorithmus darüberlaufen lassen und auf eine beliebig hohe Stelle hochrechnen, um die "höchste" Primzahl ermitteln zu können ...

Kleine mathematische Theoriefrage (nur so am Rand): Ist die Zahl unendlich eine Primzahl? Laut Theorie ist ja unendlich = -unendlich, weil sich der Zahlenstrahl in der Unendlichkeit "irgendwann einmal" überkreuzen müsste, und zwar mit sich selber, aber ist diese Zahl dann Primzahl oder nicht ???

Also dann, genug Verwirrung gestiftet :twisted: :D

Yours,
Indeterminatus.

_________________
_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: Mi 21.08.02 01:49 
Hi Indeterminatus,

ich versuche mal deine Fragen zu beantworten (Zahlentheoretiker bin ich allerdings nicht!):

zur 1. Frage: Nein, es gibt kein Primzahlmuster. Es gibt allerhöchstens ein Muster der möglichen Primzahlen (das gröbste ist wie oben genannt: ungerade). Stell dir vor es gebe ein Muster von Primzahlen. Durch Multiplikation geht das schonmal nicht, da die Zahl sonst durch den Multiplikator dividierbar wäre). Zudem könnte man dieses Muster in eine Formel "stecken" und somit hättest du alle (!!) Primzahlen bestimmt.

zur 2. Frage: Nun, es gibt laut dem Satz von Fermat unendlich viele Primzahlen. Das kann man beweisen. Allerdings kann dir wohl auf diese, deine Frage niemand eine Antwort geben, denn du widersprichst dir selbst.
>Ist die Zahl unendlich eine Primzahl?
Es gibt unendlich viele Zahlen! Was ist dann die Zahl unendlich? Das erinnert mich ein bisschen an meine Grundschulzeit :D

Gruß,
DaFox

PS: Was ist an lemmings Vorhaben so verwerflich? Ob er es schafft oder nicht, da habe ich meine eigene Meinung... Jedenfalls wird er bei diesem Projekt viel lernen (das meine ich nicht ironisch) und das ist schon einmal ein guter Grund sowas anzupacken (vorrausgesetzt man hat die Zeit)
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mi 21.08.02 11:18 
²MathiasH. Ich verstehe dein Problem. Die Lösung ist realtiv einfach. Ich habe Zahlen mit über 500.000 Stellen. Ich gebe jetzt jedem der angeschlossenen PC's die für mich rechnen einen Teil der gerade zu berbeiteten Zahl und den gerade verdächtigen Teiler. Ganz simples Beispiel: Rechner Nr. 1 rechnet von Stelle 500.000 bis Stelle 499.500. Rechner Nr. 2 derweil rechnet von Stelle 499.500 bis 499.000 usw. Wenn sie fertig sind schicken Sie ihr bisherigen Ergebnisse zurück. Diese werden zusammen gefügt. Sie bekommen neue Stellen. Ganz zum Schluss habe ich dann eine Zahl mit Kommawert, oder ohne - also keine Primzahl.

Das ganze hat dann natürlich kleinere Datenpakete und funktioniert auch etwas komplexer.

²Klabautermann, ja ich kenne diverse Vorhaben die höchste bekannte Primzahl heraus zu finden. Schliesslich hat eines dieser Projekte den bisherigen Rekord aufgestellt. Die Zahl mit 500.000 Stellen und diesen gilt es zu brechen.

Indeterminatus hat folgendes geschrieben:

... ok, Du willst also den Rekord der höchsten errechneten Primzahl ermitteln, das seh ich ja noch gerade ein, aber ... WOZU?

Ich will Dir jetzt wirklich nix dreinreden, aber Du solltest vielleicht wirklich überlegen, ob sich der Aufwand dafür lohnt ...


Gründe wären das ich dadurch Spass hätte. Eine Herausforderung meistern würde. Mir Wissen und Erfahrung aneignen könnte. Was für den Lebenslauf oder das Protfolio hätte. Aber sonst... ;)