Como Gerar Números Primos em Python

Neste tutorial de nosso Curso de Python, vamos te mostrar como gerar um número primo e vamos aprender como exibir todos os primos numa determinada faixa de valores.

É um exercício resolvido de nossa lista de questões de funções.
Leia também:

Como Saber se um Número é Primo em Python


Primeiro, vamos criar uma função chamada primo( n ) que recebe um inteiro positivo n como parâmetro.

Devemos testar esse valor n para saber se ele é primo ou não.
Relembrando: número primo é aquele que é divisível somente por 1 e por ele mesmo (por -1 e -ele também).

Ou seja, o resto da divisão por 2, 3, 4..., até n-1 tem que ser diferente de 0.

Pois é, foi usado pra saber se um número é par ou não, agora vamos usar para detectar um número primo.

Dentro da primo() simplesmente saímos calculando o resto da divisão de n por 2, por 3, ...até n-1.

Se der 0, fazemos return False, pra dizer que o número não é primo.
Se após todos esses testes do laço for ele não der False, é porque é verdade esse bilete...digo, ele é primo e damos um return True.

  • Código dessa função:
def primo(n):
    for val in range(2,n):
        if n % val == 0:
            return False

    return True
        




Exibindo números primos em um intervalo

Ok, já sabemos testar se um número é primo ou não.
Agora precisamos exibir todos os primos de 1 até n.

Vamos fazer isso através da função exibe(), que vai pedir um inteiro positivo maior que 1 para o usuário.

A seguir, vamos criar um laço for que vai testar os números 2, 3, 4, ... até o n, pra saber se cada um desses valores é primo.

Se for, imprime ele. Fazemos isso usando a função range:


def exibe():
    n = int(input('Exibir primos até o número: '))
    for val in range(2,n+1):
        if(primo(val)):
            print(val)




Código Python

Nosso script que descobre e exibe os números primos é, portanto:

def primo(n):
    for val in range(2,n):
        if n % val == 0:
            return False

    return True
        
def exibe():
    n = int(input('Exibir primos até o número: '))
    for val in range(2,n+1):
        if(primo(val)):
            print(val)
    
while True:
    exibe()

  • Exercício proposto:
Otimize o código acima de duas maneiras:
  1. Faça a função primo() testar os valores até n/2 ao invés de n
  2. Faça a função primo() testar até a raiz quadrada de n

Descubra o motivo das otimizações acima.

Nenhum comentário:

Postar um comentário