Próbowałem wygenerować wszystkie liczby pierwsze w zakresie od x do y. Próbowałem prosty przykład pierwszy: range(10,11)
co oznacza, aby sprawdzić, czy 10 jest liczbą pierwszą:
Tu jest mój kodu:Znajdowanie liczb pierwszych przy użyciu kompilacji listy
prime_list = [x for x in range(10, 11) for y in range(2,x) if x % x == 0 and x % 1 == 0 and x % y != 0]
wiem, że coś brakuje opcji powiedzieć wyrażenie x%y != 0
powinna być sprawdzana dla wszystkich w range (2,x)
i zwracają wartość true, wtedy i tylko wtedy, gdy wszyscy spełnili ten warunek.
Jak to robimy?
Mogłoby być lepiej, gdyby zabrakło tylko upto sqrt (x). Przyjemne użycie 'all', wiem teraz, ile miejsc mogłem go użyć. –
Możesz użyć' range (2, int (x ** 0,5) + 1) '. ('int' służy do uniknięcia' TypeError') – falsetru
Ładne rozwiązanie! Jedyną rzeczą jest, że nie powinno się sprawdzać do x. Mam to. Niestety, nie dostaje 2 jako liczby pierwszej .: [x dla x w zakresie (2,2000), jeśli wszystkie ([x% y dla y w zakresie (2, math.ceil (math.sqrt (x)) + 1)])] – peterb