Python: Primzahlen in einem angegebenen Bereich ausgeben

Document 对象参考手册Python3-Beispiele

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+)

#!/usr/bin/python3 # Primzahlen im angegebenen Bereich ausgeben # Eingabe vom Benutzer entgegennehmen lower = int(input("Geben Sie den Minimalwert des Intervalls ein:")) upper = int(input("Geben Sie den Maximalwert des Intervalls ein:")) for num in range(lower,upper + 1): # Primzahlen sind größer als 1 if num > 1: for i in range(2,num): if (num % i) == 0: break else: print(num)

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

def is_prime(n):
    """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

def sieve_of_eratosthenes(max_num):
    """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)

Document 对象参考手册Python3-Beispiele

Weitere Erweiterungen