Laufzeit Primzahlgenerator

ssoul26

Bekanntes Mitglied
Servus,

hat jemand von euch schon mal einen Primzahlgenerator geschrieben? Wie sehen die Laufzeiten aus?

Meine Ausgaben (Code nicht optimiert, Core 2 Duo 2GHz):

1. DEBUG
Generierte Primzahlen: 12000
Laufzeit: 2.0 s

2. DEBUG
Generierte Primzahlen: 25000
Laufzeit: 10.0 s

3. DEBUG
Generierte Primzahlen: 50000
Laufzeit: 32.0 s


Würd mich über Beiträge freuen :toll:
 

redJava99

Bekanntes Mitglied
Hi,
hab gerade was zusammengetippt und die Statistik sagt:

generated 11301 primes < 120000 in 0.8 seconds.
generated 25997 primes < 300000 in 6.3 seconds.
generated 49098 primes < 600000 in 10.1 seconds.

Auf einem Kern mit 4,2 GHz. Quadcore geringfügig schneller, viel zu parallelisieren gibts da nicht.
 

JCODA

Top Contributor
Duration for generating 78.498 primes < 1.000.000 : 23 ms
Duration for generating 664.579 primes < 10.000.000 : 178 ms
Duration for generating 5.761.455 primes < 100.000.000 : 3.079 ms
Duration for generating 50.847.534 primes < 1.000.000.000 : 35.678 ms
Duration for generating 98.222.287 primes < 2.000.000.000 : 78.997 ms

auf einem Kern mit 3.5 GHz von einem Quadcore.
 
Zuletzt bearbeitet:

ssoul26

Bekanntes Mitglied
Ihr seit ja ziemlich schnell :) Überprüft ihr die Richtigkeit der generierten Primzahlen (gegenüberstellen mit schon vorhandenen Listen)? Welches Prinzip implementiert ihr?
 
Zuletzt bearbeitet:

redJava99

Bekanntes Mitglied
Ich machs nach der Hau-Drauf-Methode:
Gefundene Primzahlen = {2}
Für jede Zahl k = {3,..n} prüfe ich auf Teilbarkeit durch alle bereits gefundenen Primzahlen.
Ist keine kleinere Primzahl Teiler, ist k eine Primzahl und kommt in die Liste.
Der Test auf Korrektheit erfolgt damit implizit.

Bei JCODA interessiert mich die Methode auch brennend - die Dauer ist ja schon um einiges kürzer. Dafür findet er im angegebenen Intervall mehr Primzahlen als es eigentlich gibt. Beruhigt mich doch sehr ;-)

[Edit: JCODA hat seine Statistik korrigiert. Bleibt nur noch die Frage nach der Implementierung...]
 
Zuletzt bearbeitet:

JCODA

Top Contributor
Ich hab vor 9 Minuten eine "bugfreie" Version reineditiert.
Ich benutze das Sieb des Eratosthenes ? Wikipedia

Und wenn ich die Optimierung vom Wiki einbaue, erhalte ich sogar:

Duration for generating 78.498 primes < 1.000.000 : 24 ms
Duration for generating 664.579 primes < 10.000.000 : 142 ms
Duration for generating 5.761.455 primes < 100.000.000 : 2.004 ms
Duration for generating 50.847.534 primes < 1.000.000.000 : 23.982 ms
Duration for generating 98.222.287 primes < 2.000.000.000 : 48.667 ms
 
Zuletzt bearbeitet:

ssoul26

Bekanntes Mitglied
Das Sieben ist wahrhaftig schwer zu toppen:)

Hab ein bisschen feintuning getrieben. So mal aktualisierte Zeiten (Core 2 Duo 2GHz):


1. DEBUG
Generierte Primzahlen: 100000
Laufzeit: 2.0 s

2. DEBUG
Generierte Primzahlen: 250000
Laufzeit: 7.0 s

3. DEBUG
Generierte Primzahlen: 700000
Laufzeit: 32.0 s
 

ssoul26

Bekanntes Mitglied
Neuer Testlauf mit einem i7.

Duration for generating 78.498 primes < 1.000.000 : 23 ms
Duration for generating 664.579 primes < 10.000.000 : 178 ms
Duration for generating 5.761.455 primes < 100.000.000 : 3.079 ms
Duration for generating 50.847.534 primes < 1.000.000.000 : 35.678 ms
Duration for generating 98.222.287 primes < 2.000.000.000 : 78.997 ms
Wie machst du das so schnell?? Über 90 Millionen Zahlen so schnell? Oder hab ich da einen Denkfehler:)


DEBUG
Generierte Primzahlen: 10000000
188540587
Laufzeit: 160.0 s
 

klauskarambulut

Bekanntes Mitglied
i3-3220 @3.3 GHz

Code:
Duration for generating 4 primes < 10 : 0 ms
Duration for generating 25 primes < 100 : 0 ms
Duration for generating 168 primes < 1.000 : 1 ms
Duration for generating 1.229 primes < 10.000 : 10 ms
Duration for generating 9.592 primes < 100.000 : 8 ms
Duration for generating 78.498 primes < 1.000.000 : 11 ms
Duration for generating 664.579 primes < 10.000.000 : 67 ms
Duration for generating 5.761.455 primes < 100.000.000 : 1.313 ms
Duration for generating 50.847.534 primes < 1.000.000.000 : 15.977 ms
Duration for generating 98.222.287 primes < 2.000.000.000 : 32.846 ms
Duration for generating 105.097.564 primes < 2.147.483.647 : 35.927 ms

Wieviel speicher gibt denn JCoda seiner VM mit? :)
 

DefconDev

Bekanntes Mitglied
Auf wievielen Cores laufen diese Berechnungen? Ich denke mal nur auf einen oder?

Ich habe bisher noch nie mit Threads programmiert, wäre das nicht eine Option?

Jeweils einen Thread mit einem bestimmten Inverall durchlaufen lassen.
 

Tobse

Top Contributor
Nicht super schnell... für die ersten 10 millionen 17,13 Sekunden. Auf einem Intel Core i5-4430 (3.1Ghz) und 2048MB Heap-Space.
Code:
188 primes in [1000; 999]: 67.0ms
Last prime: 997
1078 primes in [10000; 9999]: 16.0ms
Last prime: 9973
8415 primes in [100000; 99999]: 131.0ms
Last prime: 99991
69024 primes in [1000000; 999999]: 866.0ms
Last prime: 999983
586407 primes in [10000000; 9999999]: 16059.0ms
Last prime: 9999991

EDIT:
Der Zweite Anlauf lief besser (16,67 Sekunden für die ersten 10 Millionen, 7 Minuten und 21,61 Sekunden für die ersten 100 Millionen)
Code:
run:
188 primes in [1000; 999]: 1ms
Last prime: 997
1078 primes in [10000; 9999]: 4ms
Last prime: 9973
8415 primes in [100000; 99999]: 29ms
Last prime: 99991
69024 primes in [1000000; 999999]: 634ms
Last prime: 999983
586407 primes in [10000000; 9999999]: 16004ms
Last prime: 9999991
5097781 primes in [100000000; 99999999]: 424933ms
Last prime: 99999989
BUILD SUCCESSFUL (total time: 7 minutes 21 seconds)
 
Zuletzt bearbeitet:

jakoberhard

Mitglied
Hallo, die Berechnungen können sich sehen lassen. Bei mir rechnet er auf einem i7 mit zugewiesenen 6144MB Hash die PZ bis 1 mrd. In 62s. Nur bin ich bis jetzt noch nicht dahintergekommen, wie man das Ganze performant in eine Datei speichert (das ist der langsame Teil ;() Weiß jemand Rat?
 

Lonsdaleit

Aktives Mitglied
i3-3220 @3.3 GHz

Code:
Duration for generating 4 primes < 10 : 0 ms
Duration for generating 25 primes < 100 : 0 ms
Duration for generating 168 primes < 1.000 : 1 ms
Duration for generating 1.229 primes < 10.000 : 10 ms
Duration for generating 9.592 primes < 100.000 : 8 ms
Duration for generating 78.498 primes < 1.000.000 : 11 ms
Duration for generating 664.579 primes < 10.000.000 : 67 ms
Duration for generating 5.761.455 primes < 100.000.000 : 1.313 ms
Duration for generating 50.847.534 primes < 1.000.000.000 : 15.977 ms
Duration for generating 98.222.287 primes < 2.000.000.000 : 32.846 ms
Duration for generating 105.097.564 primes < 2.147.483.647 : 35.927 ms

Wieviel speicher gibt denn JCoda seiner VM mit? :)

Hi,

ich habe 2 Fragen hierzu:

1) Benutzt du das Sieb von Atkin? Und wenn ja, wie überprüfst du die Anzahl der Lösungen für die Gleichungen. Ich scheitere daran, dies performant zu implementieren.

2) Ist in den Zeiten das "herausschreiben" dieser Primzahlen in einer Liste oder der gleichen dabei, sodass man sich diese gefundenen Primzahlen auch ausgeben kann, oder zählst du nur einen counter hoch, wenn du eine Primzahl gefunden hast - kannst also nur die Anzahl der Primzahlen liefern, aber nicht welche es sind?


Gruß,
Lonsdaleit.
 

Joose

Top Contributor
2) Ist in den Zeiten das "herausschreiben" dieser Primzahlen in einer Liste oder der gleichen dabei, sodass man sich diese gefundenen Primzahlen auch ausgeben kann, oder zählst du nur einen counter hoch, wenn du eine Primzahl gefunden hast - kannst also nur die Anzahl der Primzahlen liefern, aber nicht welche es sind?

Am performantesten ist es einfach nur die Anzahl der Primzahlen zu berechnen, wenn man aber noch wissen will welche Primzahlen gefunden wurden, dann sollte man diese in einer Liste abspeichern und ERST AM ENDE, diese auf der Konsole ausgeben oder in eine Datei schreiben.
Man kann natürlich noch mit Threads arbeiten und diese Aufgaben parallel laufen lassen (wobei hier mögliche locks die Performance wieder drücken könnten)
 

Lonsdaleit

Aktives Mitglied
Am performantesten ist es einfach nur die Anzahl der Primzahlen zu berechnen, wenn man aber noch wissen will welche Primzahlen gefunden wurden, dann sollte man diese in einer Liste abspeichern und ERST AM ENDE, diese auf der Konsole ausgeben oder in eine Datei schreiben.
Man kann natürlich noch mit Threads arbeiten und diese Aufgaben parallel laufen lassen (wobei hier mögliche locks die Performance wieder drücken könnten)

Dass es performanter ist sich nur die Anzahl berechnen zu lassen ist mir klar:) Deshalb habe ich die Frage ja gestellt ob in den Zeiten auch das ermitteln/abspeichern der expliziten Primzahlen dabei sind, oder ob in diesen Zeiten nur die Anzahl gemessen wird.

Gibt es einen nutzen dafür nur die Anzahl der Primzahlen zu kennen, aber nicht welche?

Gruß,
Lonsdaleit.
 

Joose

Top Contributor
Dass es performanter ist sich nur die Anzahl berechnen zu lassen ist mir klar:) Deshalb habe ich die Frage ja gestellt ob in den Zeiten auch das ermitteln/abspeichern der expliziten Primzahlen dabei sind, oder ob in diesen Zeiten nur die Anzahl gemessen wird.

Da liegt das Problem bei allen Messungen in diesem Thread. Keiner schreibt wirklich dazu was ergemessen hat. Daher kann man schwer vergleichen.

Gibt es einen nutzen dafür nur die Anzahl der Primzahlen zu kennen, aber nicht welche?

Ich wüsste keinen, vielleicht gibt es einen. Kommt auf die Problemstellung an.
 

jakoberhard

Mitglied
i3-3220 @3.3 GHz

Code:
Duration for generating 4 primes < 10 : 0 ms
Duration for generating 25 primes < 100 : 0 ms
Duration for generating 168 primes < 1.000 : 1 ms
Duration for generating 1.229 primes < 10.000 : 10 ms
Duration for generating 9.592 primes < 100.000 : 8 ms
Duration for generating 78.498 primes < 1.000.000 : 11 ms
Duration for generating 664.579 primes < 10.000.000 : 67 ms
Duration for generating 5.761.455 primes < 100.000.000 : 1.313 ms
Duration for generating 50.847.534 primes < 1.000.000.000 : 15.977 ms
Duration for generating 98.222.287 primes < 2.000.000.000 : 32.846 ms
Duration for generating 105.097.564 primes < 2.147.483.647 : 35.927 ms

Wieviel speicher gibt denn JCoda seiner VM mit? :)

Hallo, hast Du Multiprozessing bzw. Threading aktiv? Du bist ca. 4x so schnell wie ich mit dem Sieb des E. Bei mir meckert er außerdem, wenn ich 2.147.483.647 eingebe: Heap voll, habe leider nur 8GB RAM. Du hast aber nicht das Sieb des Atkin verwendet? :bahnhof:Ich möchte versuchen, mehr Stellen zu berechnen, aber dafür benötige ich ein mehrdimensionales Array, wofür es nötig ist, mit Überträgen zu rechnen. Damit könnte man dann theoretisch (Rechenkapazität und Speicher vorausgesetzt), auch vollständige Primzahllisten mit z.B. 27 Stellen berechnen. (Was wohl etwas dauern würde :) )
 

jakoberhard

Mitglied
Feld mit Primzahlen bis 1000000000 fertig markiert
Primzahlen gezählt, es sind: 50847534
Primzahlen-Feld erzeugt
Benötigte Zeit: ca. 62 Sekunden
Primzahlen-Feld Ausgabe in Datei...
Ausgabe in Datei primzahlen-erastosthenes.txt fertig!
Benötigte Zeit für die Ausgabe: ca. 298 Sekunden
BUILD SUCCESSFUL (total time: 6 minutes 1 second)

... meine Ausgabe bei Primzahlen bis 1Mrd. Habe auch nur alle geraden Zahlen geprüft, schneller wirds so nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
M Laufzeit des Prim Algorithmus Allgemeine Java-Themen 3
M Laufzeit LinkedList Allgemeine Java-Themen 9
M verbesserte Laufzeit bei LinkedList Allgemeine Java-Themen 7
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
H was ist den dieses zur Kompilierzeit und zur Laufzeit in Java? Allgemeine Java-Themen 3
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
L Compiler-Fehler Google Guice Module zur Laufzeit zusammenstellen und binden Allgemeine Java-Themen 4
J Jasper Reports - Subreport zur Laufzeit ändern Allgemeine Java-Themen 6
O jar und EXE Dateien, Pfade zur Laufzeit Allgemeine Java-Themen 1
T Externe Java Klasen zur Laufzeit einbinden Allgemeine Java-Themen 10
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
Neumi5694 Interpreter-Fehler final Eigenschaft während Laufzeit geändert Allgemeine Java-Themen 2
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
M Sinn von Kompilierung zur Laufzeit Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
T Dateien zur Laufzeit in Java-Programm packen? Allgemeine Java-Themen 3
S Zur Laufzeit Klasse mit einer anzahl von X Objekten erstellen Allgemeine Java-Themen 5
F Classpath Programmteile zur Laufzeit nachladen Allgemeine Java-Themen 6
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
H ResourceBundle während Laufzeit bearbeiten Allgemeine Java-Themen 3
J Input/Output Jar-Datei zur Laufzeit erweitern Allgemeine Java-Themen 13
P Generic zur Laufzeit Allgemeine Java-Themen 4
A ar während der Laufzeit überschreiben Allgemeine Java-Themen 20
X MergeSort Laufzeit Problem Allgemeine Java-Themen 4
J Resourcen waehrend der Laufzeit aendern? Allgemeine Java-Themen 9
P Wie bei log4j den Dateipfad der Logdatei zur Laufzeit ändern? Allgemeine Java-Themen 3
X Update einer Jar während der Laufzeit Allgemeine Java-Themen 8
T Klassen Fabrik (Factory) zur Laufzeit erweitern Allgemeine Java-Themen 5
S UML zur Laufzeit ändern Allgemeine Java-Themen 10
E Wert von enum zur Laufzeit festlegen. Allgemeine Java-Themen 5
L Methode in Thread mit langer Laufzeit unterbrechen (ANT executeTarget) Allgemeine Java-Themen 4
O Problem bei Darstellung der Laufzeit eines Programms Allgemeine Java-Themen 3
hdi Ressourcen dynamisch zur Laufzeit laden Allgemeine Java-Themen 15
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
N variable Anzahl von Objektinstanzen zur Laufzeit erstellen Allgemeine Java-Themen 4
P Java Konsole zur Laufzeit einblenden Allgemeine Java-Themen 4
P Klassenwahl zur Laufzeit Allgemeine Java-Themen 5
R Objekt zur Laufzeit zerstören? Allgemeine Java-Themen 12
E formartierte Ausgabe zur Laufzeit Allgemeine Java-Themen 2
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
DamienX Debug Modus zur Laufzeit erkennen Allgemeine Java-Themen 3
Stillmatic Debuggen/ Laufzeit von Methoden Allgemeine Java-Themen 2
Dragonfire Generic Typ zur Laufzeit Allgemeine Java-Themen 9
M Klasse zur Laufzeit ersetzen Allgemeine Java-Themen 10
S Wie gross ist die Laufzeit für diese Schleife?? Allgemeine Java-Themen 8
G File zur Laufzeit erzeugen Allgemeine Java-Themen 4
G Jar File zur Laufzeit ändern. Allgemeine Java-Themen 4
T Java - Compilieren während Laufzeit Allgemeine Java-Themen 3
Y JARs austauschen zur Laufzeit Allgemeine Java-Themen 11
G Datenbank zur laufzeit wechseln Allgemeine Java-Themen 11
C Innere Klassen zur Laufzeit Instanzieren Allgemeine Java-Themen 4
T Zur Laufzeit erben? Allgemeine Java-Themen 22
L HashMap / Objekte auf Festplatte zur Laufzeit auf HD swappen Allgemeine Java-Themen 7
L Zur Laufzeit eine Klasse laden, die auf jar-File zugreift Allgemeine Java-Themen 15
V Java-Programm weiss zur Laufzeit wie es gestartet wurde? Allgemeine Java-Themen 6
N Endlosschleifen automatisiert erkennen (Code oder Laufzeit)? Allgemeine Java-Themen 6
G Eindeutiges Identifizieren einer JTable/Component z.laufzeit Allgemeine Java-Themen 2
G Datei durchsuchen, lange Laufzeit! Allgemeine Java-Themen 2
A log4j 1.3 und ändern der log Konfiguration zur Laufzeit Allgemeine Java-Themen 4
Apo Zur Laufzeit Klassen mit Packages laden? Allgemeine Java-Themen 2
G genauen Typ einer generischen Klasse zur Laufzeit ermitteln Allgemeine Java-Themen 2
F Typ eines Objekts zur Laufzeit bestimmen? Allgemeine Java-Themen 8
T xverify-parameter : Workaround zur Laufzeit? Allgemeine Java-Themen 8
M Bibliotheksname zur Laufzeit ermitteln (Classloader) Allgemeine Java-Themen 7
G Klasse wird zur Laufzeit nicht gefunden? Allgemeine Java-Themen 3
@ zur Laufzeit Interface aus jar implementieren? Allgemeine Java-Themen 5
MQue Laufzeit Allgemeine Java-Themen 4
D Lautstärke einzelner AudioClips zur Laufzeit verändern Allgemeine Java-Themen 4
C Mathefunktion zur Laufzeit einlesen und dann verarbeiten Allgemeine Java-Themen 13
G Klassen zur Laufzeit einbinden Allgemeine Java-Themen 3
J Bibliotheken erst zur Laufzeit laden Allgemeine Java-Themen 5
R Drag und Drop - Fehler während Laufzeit Allgemeine Java-Themen 14
byte Generic Type einer List zur Laufzeit rausfinden? Allgemeine Java-Themen 4
A Class File zur Laufzeit laden ohne den Binary Name zu kennen Allgemeine Java-Themen 11
M Überprüfen einer zur Laufzeit geladenen Klasse Allgemeine Java-Themen 3
H Klassen aus einem Ordner zur Laufzeit laden. Allgemeine Java-Themen 6
S Laufzeit und Compilefehler Allgemeine Java-Themen 6
S JPanel zur Laufzeit verbergen bzw. wieder anzeigen lassen Allgemeine Java-Themen 4
F Objektname zur Laufzeit festlegen? Allgemeine Java-Themen 12
I Sprache zur Laufzeit des Programms ändern Allgemeine Java-Themen 3
G Laufzeit eines aus Java gestarteten Programms beobachten Allgemeine Java-Themen 3
S Log4J: Logdatei zur Laufzeit ermitteln. Allgemeine Java-Themen 2
I Zur Laufzeit ermitteln, ob Klasse in JAR-Datei Allgemeine Java-Themen 2
R iText.jar wird zur Laufzeit nicht gefunden Allgemeine Java-Themen 4
J ResourceBundle / properties-datei während der Laufzeit verän Allgemeine Java-Themen 6
H Methode einer zur Laufzeit generierten Instanz aufrufen Allgemeine Java-Themen 2
M Formel in einem String während Laufzeit berechnen. Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben