Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

[Python] Hilfe bei Implementierung eines Prim-Alogrithmus [erledigt]

Diskussion: [Python] Hilfe bei Implementierung eines Prim-Alogrithmus [erledigt] im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Die in der Python-Dokumentation erwähnte Implementierung einer Prim-Überprüfung ( Link ) ist zwar sehr gut nachvollziehbar, allerdings bei großen ...

Antwort
Alt 08.06.07, 14:13   #1 (permalink)
 
Registriert seit: 08.06.07
Darillian Leistung: Facit NTK
Likes: 0
Smile [Python] Hilfe bei Implementierung eines Prim-Alogrithmus [erledigt]

Anzeige

Die in der Python-Dokumentation erwähnte Implementierung einer Prim-Überprüfung (Link) ist zwar sehr gut nachvollziehbar, allerdings bei großen (ca. ab 10^6) Zahlen sehr ressourcenfressend und vor allem langsam. Daher wollte ich, um Übung in Python zu kriegen folgenden Code optimieren:

Code:
for x in range (20000,21000):
     for n in range(2, x):
          if x % n == 0:
               break
     else:
          print 'Primzahl gefunden!', x)
Ich habe daran gedacht, die zweite Zeile, also das Erstellen einer "Teilerliste" durch eine echte Teilerliste nur mit Primzahlen zu ersetzen. Allerdings habe ich Probleme, die gefundene Primzahl global an "teiler" anzufügen, dies geschieht immer nur lokal in der else:-Option:
Code:
for x in range(20000,21000):                     #Das Intervall, das nach Primzahlen durchsucht werden soll
     teiler = [2]                                #Teilerliste (Inhalt sind nur Primzahlen)
     for n in teiler:
          if x % n == 0:                         #Falls die aktuell untersuchte Zahl (x) durch ein Element der Teiler-Liste restlos teilbar ist, ist x nicht prim
               break
     else:
          print 'Primzahl gefunden!', x
          teiler.append(x)                       #Falls eine Primzahl gefunden wird, soll sie ans Ende der Teilerliste angehängt werden
          print teiler                           #Ausgabe der Teilerliste um zu prüfen, ob sie korrekt geändert wurde
Nun ist allerdings das Problem, dass ich keinen Schimmer habe, wie ich "teiler" global ändern kann. Wenn ich den oberen Code durchlaufen lasse, bekomme ich folgende Ausgabe:
Code:
Primzahl gefunden! 20001
[2, 20001]
Primzahl gefunden! 20003
[2, 20003]
Primzahl gefunden! 20005
[2, 20005]
usw.
Ich hoffe, jemand kann mir eine simple Antwort darauf geben und schüttet mich nicht mit alternativen Implementierungen dieses Problems zu ;)
Darillian ist offline   Mit Zitat antworten
Alt 09.06.07, 14:12   #2 (permalink)
 
Registriert seit: 11.09.05
Diabeles Leistung: Facit NTK
Likes: 0
Standard

Hallo Darillian,

der Fehler liegt darin, dass du teiler bei jedem Schleifendurchlauf [2] erneut zuweist und die Werte somit nach jede Schleifendurchlauf verworfen werden.
Code:
teiler = [2]
muss also noch vor der ersten Schleife stehen, und dann funktioniert's auch.
Diabeles ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 09.06.07, 14:38   #3 (permalink)
Themenstarter
 
Registriert seit: 08.06.07
Darillian Leistung: Facit NTK
Likes: 0
Standard

Och nee, ich hasse solche doofen Logik-Fehler
Ich danke dir vielmals, endlich macht das Programm, was ich will!
Endlich
Darillian ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » [Python] Hilfe bei Implementierung eines Prim-Alogrithmus [erledigt]
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Python hilfe Shadowofsystem Downloads 13 25.11.09 21:03
[Erledigt] CSS mit Trick innerhalb eines Elements? H3PO (Web-) Design und webbasierte Sprachen 9 15.09.08 17:22
Hilfe beim Scripten eines Processkilers SargoDarya Windows 5 07.11.05 18:58
Hilfe beim compilieren eines Codes (C++) SUID:root Code Kitchen 10 06.09.04 22:20


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61