QNA > H > How To Find Prime Numbers In A List In Python

How to find prime numbers in a list in Python

If you know the range of integers (or at least the maximum value), then the most efficient strategy would be to pre-prepare a list of prime numbers; build a python set of those values, and then test each number in the list as to whether it is in the set of primes.

Other wise you need a prime testing function :

In python this would be :

  1. def is_prime(n) : 
  2. """Return True if n is a prime""" 
  3. if n <= 1: 
  4. return False 
  5.  
  6. if n < 4 or n==5: 
  7. return True 
  8.  
  9. if n > 5 and abs(n%6) !=1: 
  10. return False  
  11.  
  12. for v in range(2, int(n ** 0.5)+1): 
  13. if n % v == 0: 
  14. return False 
  15. else: 
  16. return True 

lines 3 to 10 are specific shortcuts for prime numbers :

  • line 3–4 : We know that 1 is not a prime
  • line 6–7 : Sappiamo che ogni intero minore di 4 è un primo (cioè 2 & 3)
  • linea 9 - 10 : sappiamo che per tutti gli interi maggiori di 5 allora solo quegli interi che sono o 6n+1 o 6n-1 possono essere primi (dove n è un intero). Quindi possiamo restituire velocemente se il valore non è né 6n+1 né 6n-1.

Le linee da 12 a 16 testano se l'intero può essere diviso per qualsiasi altro intero da 2 a [math]\sqrt{n}[/math].

Le scorciatoie aiutano a migliorare la velocità di esecuzione di un fattore 3 circa poiché possono escludere così tanti numeri molto rapidamente - essenzialmente il ciclo nelle linee da 12 a 16 viene eseguito solo per 1/3 di tutti i numeri (quelli che sono o 6n+1 o 6n-1).

Edit bugs fixes as far as I can tell.

Di Norval Hollembaek

Perché PHP è odiato da così tanti sviluppatori? :: Come affrontare il lavoro 7 giorni su 7
Link utili