Dies ist ein Repository für eine praktische Implementierung von Primzahltests in Python.
- Git-Repository wurde erstellt und initial strukturiert.
src/primalityfür alle Implementierungen für die Primzahltestssrc/analysisfür die Analyse durch Plots und Datenexportstests/für Unittestsdata/für die Datensammlung der Testpoolsresults/für die Analyseauswertung der Datenrequirements.txtfür alle benötigten Pakete
Repo klonen:
git clone https://github.com/sp8cky/Primes && cd Primespip install -r requirements.txtAus dem root directory:
python src/analysis/prime-analysis.py- Testdaten werden initialisiert
- Für jeden Test wird ein Pool an Zahlen n erzeugt
- Die Laufzeitmessung wird über t Wiederholungen durchgeführt
- Die Protokollversionen aller Tests werden folgend durchgeführt, um weitere Daten zu protokollieren (siehe Datenerhebung pro Test)
- Die Ergebnisse werden über Plots visualisiert und per csv-Datei exportiert
Felder (werden für jeden Test ergänzt, wenn verfügbar):
Zahl: Die getestete Zahl nTest: Name des Tests (z. B. Fermat, Lucas, Proth…)Ergebnis: Ob der Test n als Primzahl erkannt hat (PRIME/COMPOSITE/INVALID/NOT_APPLICABLE)best_time: Kürzeste gemessene Laufzeit über alle Wiederholungenavg_time: Durchschnittlich gemessene Laufzeit über alle Wiederholungenworst_time: Längste gemessene Laufzeit über alle Wiederholungenstd_dev: Standardabweichung der Laufzeit in Millisekunden (Stabilität der Messung)a_values: Liste der verwendeten Zufallsbasen areason: Begründung, falls der Test nicht durchführbar warother_fields: Testspezifische Angaben von Zwischenergebnissen
Folgende Tests dokumentieren folgende Angaben:
| Gr | Test | n | res | TPrime | is_err | FP | TN | EC | Best | Avg | Worst | Std | a_values | Other_fields | Reason |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Fermat (k=) | [(a1, result), (...)] | ||||||||||||||
| Miller-Rabin (k=) | [(a1, result), (...)] | ||||||||||||||
| Solovay-Strassen (k=) | [(a1, cond1, cond2), (...)] | ||||||||||||||
| Initial Lucas | [(a1, cond1, cond2), (...)] | ||||||||||||||
| Lucas | [(a1, cond1, cond2), (...)] | ||||||||||||||
| Optimized Lucas | {q1: (a1, cond1, cond2), q2: (...)} | ||||||||||||||
| Pepin | |||||||||||||||
| Lucas-Lehmer | [p, sequence, S] | ||||||||||||||
| Wilson | |||||||||||||||
| AKS10 | [initial_check, find_r, prime_divisor_check, polynomial_check] | ||||||||||||||
| Proth Variant | [(a_1, result), (...)] | ||||||||||||||
| Pocklington | |||||||||||||||
| Optimized Pocklington | {q1: (a_1, cond1, cond2), q2: (...)} | ||||||||||||||
| Optimized Pocklington Var. | {q1: (a_1, cond1, cond2), q2: (...)} | [b, pow(b, (n - 1) // F, n)] | |||||||||||||
| Generalized Pocklington | [(a1, cond1, cond2), (...)] | [K, p, n] | |||||||||||||
| Rao | [(a1, cond1, cond2), (...)] | [p, 2, n_exp] | |||||||||||||
| Ramzy | [(a1, cond1, cond2), (...)] | [K, p, n_exp] |
- Daten werden im CSV-Format und die Plots im PNG-Format gespeichert
- Die CSV-Dateien sind Grundlage für die statistische Auswertung
- Auswertung erfolgt pro Testpool über
src/analysis/analyse-data.py - Ergebnisse werden als csv-Datei exportiert
This project was created by sp8cky.