Python: Primzahlen in einem angegebenen Bereich ausgeben
Es gibt unendlich viele Primzahlen. Abgesehen von 1 und sich selbst sind sie durch keinen anderen Teiler teilbar.
Das folgende Beispiel kann Primzahlen innerhalb eines angegebenen Bereichs ausgeben:
Beispiel (Python 3.0+)
Nach Ausführung des obigen Programms lautet das Ausgabeergebnis:
$ python3 test.py 输入区间最小值: 1 输入区间最大值: 100 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Verwendung der Probedivision
Die Probedivision ist ein grundlegender Algorithmus, der für jede Zahl Teilbarkeitstests durchführt, um festzustellen, ob sie eine Primzahl ist. Der folgende Code verwendet die Probedivision, um Primzahlen innerhalb eines angegebenen Bereichs auszugeben:
Beispiel
"""Feststellen, ob eine Zahl eine Primzahl ist"""
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
def primes_in_range(start, end):
"""Primzahlen innerhalb des angegebenen Bereichs ausgeben"""
for num in range(start, end + 1):
if is_prime(num):
print(num)
# Beispiel: Primzahlen im Bereich 10 bis 50 ausgeben
primes_in_range(10, 50)
Verwendung des Siebs des Eratosthenes
Das Sieb des Eratosthenes ist ein effizienterer Algorithmus, der sich besonders dafür eignet, Primzahlen in einem großen Bereich zu finden. Der folgende Code verwendet das Sieb des Eratosthenes, um Primzahlen innerhalb eines angegebenen Bereichs auszugeben:
Beispiel
"""Verwende das Sieb des Eratosthenes, um alle Primzahlen bis max_num zu finden"""
sieve = [True] * (max_num + 1)
sieve[0] = sieve[1] = False # 0 und 1 sind keine Primzahlen
p = 2
while p * p <= max_num:
if sieve[p]:
for multiple in range(p * p, max_num + 1, p):
sieve[multiple] = False
p += 1
return [p for p, is_prime in enumerate(sieve) if is_prime]
def primes_in_range(start, end):
"""Primzahlen innerhalb des angegebenen Bereichs ausgeben"""
primes = sieve_of_eratosthenes(end)
for num in primes:
if num >= start:
print(num)
# Beispiel: Primzahlen im Bereich 10 bis 50 ausgeben
primes_in_range(10, 50)
Weitere Erweiterungen
Python3-Beispiele