Wird wohl so sein, es geht doch um Hilfestellung für den Threadstarter. Doch bringen einige Beispiele aus Sieb mittels Hy oder wie man das einmal mit Generatoren gemacht hat und diskutiert über continue ja oder nein. Ich stelle nochmals die fertige Lösung für vladima rein, aber vielleicht ist so schon längst vetrieben.pixewakb hat geschrieben:Eine Endlosdiskussion. Ich denke mittlerweile dürftet ihr den Thread-Starter vertrieben haben.
@vladima, wenn Du noch da bist, das wäre die passende Lösung:
Code: Alles auswählen
from math import sqrt
def is_primzahl(wert):
if wert % 2 == 0:
return False
'''Wird der Divisor groesser als die Wurzel,
dann wird der Quotient kleiner als die Wurzel.
Daher kann man bereits mit dem groessten ungeradzahligen
Integerwert vor der Wurzel aufhoeren'''
reicht_bis = int(sqrt(wert)+0.1) # +0.1 weil auch etwa 16.999999 herauskommen könnte statt 17
for divisor in range(3, reicht_bis + 2, 2):
if wert % divisor == 0:
return False
return True
def primzahlen_zwillinge(von,bis):
rueckgabe = []
aufgehobene_primzahl = None
for zu_untersuchender_wert in range (von,bis+1):
if is_primzahl(zu_untersuchender_wert):
neue_primzahl = zu_untersuchender_wert
if aufgehobene_primzahl != None:
if neue_primzahl == aufgehobene_primzahl + 2:
rueckgabe.append( (aufgehobene_primzahl, neue_primzahl ) )
aufgehobene_primzahl = neue_primzahl
return rueckgabe
def main():
print(primzahlen_zwillinge(10102,10900))
main()