Afficher les nombres premiers dans une plage spécifiée en Python

Document 对象参考手册Exemples Python3

Les nombres premiers sont en nombre infini. À part 1 et eux-mêmes, ils ne sont divisibles par aucun autre diviseur.

L'exemple suivant peut afficher les nombres premiers dans une plage spécifiée :

Exemple (Python 3.0+)

#!/usr/bin/python3 # Afficher les nombres premiers dans la plage spécifiée # demander la saisie à l'utilisateur lower = int(input("Entrez la valeur minimale de l'intervalle :")) upper = int(input("Entrez la valeur maximale de l'intervalle :")) for num in range(lower,upper + 1): # Les nombres premiers sont supérieurs à 1 if num > 1: for i in range(2,num): if (num % i) == 0: break else: print(num)

Après l'exécution du programme ci-dessus, le résultat de sortie est :

$ 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

Utilisation de la division par essais

La division par essais est un algorithme de base qui effectue des tests de divisibilité sur chaque nombre pour déterminer s'il est premier. Voici le code qui utilise la division par essais pour afficher les nombres premiers dans une plage spécifiée :

Exemple

def is_prime(n):
    """Déterminer si un nombre est un nombre premier"""
    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):
    """Afficher les nombres premiers dans la plage spécifiée"""
    for num in range(start, end + 1):
        if is_prime(num):
            print(num)

# Exemple : afficher les nombres premiers dans la plage 10 à 50
primes_in_range(10, 50)

Utilisation du crible d'Ératosthène

Le crible d'Ératosthène est un algorithme plus efficace, particulièrement adapté pour trouver les nombres premiers dans une grande plage. Voici le code qui utilise le crible d'Ératosthène pour afficher les nombres premiers dans une plage spécifiée :

Exemple

def sieve_of_eratosthenes(max_num):
    """Utiliser le crible d'Ératosthène pour trouver tous les nombres premiers jusqu'à max_num"""
    sieve = [True] * (max_num + 1)
    sieve[0] = sieve[1] = False  # 0 et 1 ne sont pas des nombres premiers
    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):
    """Afficher les nombres premiers dans la plage spécifiée"""
    primes = sieve_of_eratosthenes(end)
    for num in primes:
        if num >= start:
            print(num)

# Exemple : afficher les nombres premiers dans la plage 10 à 50
primes_in_range(10, 50)

Document 对象参考手册Exemples Python3

Autres extensions