Więc mam te dwa problemy do zadania domowego i utknąłem na drugim.
Użyj Python Set Compression (Pythonowy odpowiednik notacji Set Builder), aby wygenerować zbiór wszystkich liczb pierwszych, które są mniejsze niż 100. Przypomnij sobie, że liczba pierwsza to liczba całkowita większa niż 1 i niepodzielna przez żadną liczbę całkowitą inną niż i 1. Przechowuj swój zestaw liczb pierwszych w zmiennej (będziesz jej potrzebował do dodatkowych części). Wyprowadź swój zestaw liczb pierwszych (np. Za pomocą funkcji drukowania).
Użyj funkcji Zrozumienie zbioru Pythona, aby wygenerować zestaw uporządkowanych par (krotek o długości 2) składających się ze wszystkich par pierwszych składających się z liczb pierwszych mniejszych niż 100. Para pierwsza to para kolejnych liczb nieparzystych, które są liczbami pierwszymi. Przechowuj swój zestaw pierwszych par w zmiennej. Twój zestaw numer 1 będzie bardzo pomocny. Wyprowadź zestaw pierwszych par.
W przypadku pierwszego działa to idealnie:
r= {x for x in range(2, 101)
if not any(x % y == 0 for y in range(2, x))}
Jednak jestem dość zaskoczony drugim. Myślę, że być może będę musiał wziąć z czymś iloczyn kartezjański zbioru r, ale po prostu nie jestem pewien.
To mnie trochę zbliża, ale chcę tylko kolejnych par.
cart = { (x, y) for x in r for y in r
if x < y }
źródło
Możesz generować pary w ten sposób:
{(x, x + 2) for x in r if x + 2 in r}
Następnie pozostaje tylko uzyskać warunek, który uczyni je pierwszymi, co już zrobiłeś w pierwszym przykładzie.
Inny sposób na zrobienie tego: (Chociaż wolniej w przypadku dużych zestawów liczb pierwszych)
{(x, y) for x in r for y in r if x + 2 == y}
źródło
r
, więc{(x, x + 2) for x in r if x + 2 in r}
wystarczy.and x % 2 == 1
to nie jest konieczne.