Casa > 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 : Sabemos que qualquer número inteiro menor que 4 é um prime (ou seja, 2 & 3)
  • line 9 - 10 : sabemos que para todos os números inteiros maiores que 5, apenas os números inteiros que são 6n+1 ou 6n-1 podem ser primes (onde n é um número inteiro). Então podemos retornar rapidamente se o valor não for 6n+1 ou 6n-1.

Linhas 12 a 16 testa se o inteiro pode ser dividido por quaisquer outros inteiros de 2 a [matemática]\sqrt{n}[/math].

Os atalhos ajudam a melhorar a velocidade de execução por um fator de 3 aproximadamente já que podem descartar tantos números muito rapidamente - essencialmente o loop nas linhas 12 a 16 só é executado para 1/3 de todos os números (aqueles que são 6n+1 ou 6n-1).

Editar correções de bugs até onde eu posso dizer.

De Milt Schieb

O produto dos números primos mais 1 é sempre primo? :: Como lidar com o trabalho 7 dias em uma semana