HOWTO · Python

Controlla se un numero è primo in Python

Questo tutorial mostra come verificare se un numero è primo o meno in Python.

Un numero primo può essere rappresentato come un numero naturale senza altri divisori positivi, ad eccezione del numero 1 e di se stesso. Il numero 1 non viene conteggiato nella lista dei numeri primi.

Questo tutorial discuterà i diversi metodi che puoi usare per verificare se un numero è un numero primo.

Usa il metodo di iterazione semplice per determinare un numero primo in Python

In questo metodo, utilizziamo un semplice metodo di iterazione utilizzando un cicli for o while. Iterare attraverso i numeri a partire da 2 e salendo fino a K/2 e verificando se uno di questi numeri divide K.

Se viene trovato un numero che corrisponde a questo criterio, viene restituito False. D’altra parte, se tutti i numeri non soddisfano questo criterio, il numero K dato è un numero primo e viene restituito il valore True.

Il codice seguente usa il metodo di iterazione semplice per verificare se il numero dato è un numero primo in Python.

k = 13

# 1 not being a prime number, is ignored
if k > 1:
    for i in range(2, int(k / 2) + 1):
        if (k % i) == 0:
            print("It is not a prime number")
            break
    else:
        print("It is a prime number")

else:
    print("It is not a prime number")

Produzione:

It is a prime number

Puoi ottimizzare il codice sopra applicando alcune modifiche. Effettua le seguenti ottimizzazioni per rendere il codice ancora più veloce:

*Controllare fino a raggiungere la radice del numero dato invece di controllare il numero esatto. Questo processo elimina sostanzialmente la ridondanza che si verifica quando un fattore più grande del numero K è un multiplo di un fattore più piccolo che è già stato ripetuto.

*Tutti i numeri primi esistono nella forma di 6n±1, con 2 e 3 come uniche eccezioni. Pertanto, controllare la divisibilità del numero dato con 2 e 3, e quindi controllare ogni numero che ha la forma 6n±1 è la soluzione più efficiente.

Il codice seguente usa il metodo di iterazione semplice ottimizzato per verificare se il numero dato è un numero primo in Python.

def isitPrime(k):
    if k == 2 or k == 3:
        return True
    if k % 2 == 0 or k < 2:
        return False
    for i in range(3, int(k ** 0.5) + 1, 2):
        if k % i == 0:
            return False

    return True


print(isitPrime(13))

Produzione:

True

Il metodo di iterazione ottimizzato lo rende più veloce ed efficiente di circa il 30% rispetto al metodo di iterazione semplice.

Usa la funzione sympy.isprime() per verificare se il numero dato è un numero primo in Python

SymPy è una libreria in Python utilizzata per implementare la matematica simbolica. Vuole essere un sistema di computer algebra (CAS) semplicistico che contenga tutte le caratteristiche essenziali. L’installazione di questo modulo è necessaria per questo metodo e può essere scaricato semplicemente usando il comando pip.

La funzione sympy.isprime() è una funzione integrata nel modulo SymPy e può essere utilizzata per verificare eventuali numeri primi. È una funzione diretta e restituisce True se il numero da controllare è primo e False se il numero non è primo.

Il codice seguente usa la funzione sympy.isprime() per verificare se il numero dato è un numero primo in Python.

from sympy import *

isprime(8)
isprime(11)

Produzione:

False
True

Dobbiamo notare che qualsiasi numero negativo non rientra nei criteri dei Numeri Primi. L’output di queste funzioni può variare se viene confrontato un numero negativo.