Ich habe also diese beiden Probleme für eine Hausaufgabe und stecke bei der zweiten fest.
Verwenden Sie ein Python-Mengenverständnis (Pythons Äquivalent zur Set Builder-Notation), um eine Menge aller Primzahlen zu generieren, die kleiner als 100 sind. Denken Sie daran, dass eine Primzahl eine Ganzzahl ist, die größer als 1 ist und nicht durch eine andere Ganzzahl als geteilt werden kann selbst und 1. Speichern Sie Ihre Primzahlen in einer Variablen (Sie benötigen sie für zusätzliche Teile). Geben Sie Ihre Primzahlen aus (z. B. mit der Druckfunktion).
Verwenden Sie ein Python-Mengenverständnis, um eine Menge geordneter Paare (Tupel der Länge 2) zu generieren, die aus allen Primzahlenpaaren bestehen, die aus Primzahlen unter 100 bestehen. Ein Primzahlpaar ist ein Paar aufeinanderfolgender ungerader Zahlen, die beide Primzahlen sind. Speichern Sie Ihre Prime Pairs in einer Variablen. Ihr Satz Nummer 1 wird sehr hilfreich sein. Geben Sie Ihren Satz Prime Pairs aus.
Für den ersten funktioniert dies perfekt:
r= {x for x in range(2, 101)
if not any(x % y == 0 for y in range(2, x))}
Allerdings bin ich beim zweiten ziemlich ratlos. Ich denke, ich muss vielleicht das kartesische Produkt des Sets mit etwas nehmen, aber ich bin mir einfach nicht sicher.
Das bringt mich etwas näher, aber ich möchte nur die aufeinanderfolgenden Paare.
cart = { (x, y) for x in r for y in r
if x < y }
quelle
Sie können Paare wie folgt generieren:
{(x, x + 2) for x in r if x + 2 in r}
Dann müssen Sie nur noch eine Bedingung erhalten, um sie zur Primzahl zu machen, was Sie bereits im ersten Beispiel getan haben.
Eine andere Art, es zu tun: (Obwohl langsamer für große Mengen von Primzahlen)
{(x, y) for x in r for y in r if x + 2 == y}
quelle
r
, also{(x, x + 2) for x in r if x + 2 in r}
reicht es aus.and x % 2 == 1
ist nicht nötig.