Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

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.

2 comentários:

  1. Rapaz, passei perto da resolução correta. Errei só um pouquinho kkkkkk. Mas, enfim, segue o meu código:


    import time

    def verificar_numero_primo(n):
    if n==1:
    return False
    elif n==2:
    return True
    else:
    for count in range(2, n):
    if n%count==0:
    return False
    else:
    continue
    return True

    def exibir(dado_num):
    for count in range(1, dado_num):
    if verificar_numero_primo(count)==True:
    print(count)
    time.sleep(1.3)

    def entrada():
    num = int(input('Exibi númerus primos de 1 até:'))
    exibir(num)

    while True:
    entrada()

    ResponderExcluir
  2. def éPrimo(valor):
    i = 2
    primo = True
    while i < valor and primo:
    div = valor % i
    if div == 0:
    primo = False
    i+=1
    if primo:
    return True
    else:
    return False

    def geraPrimo(n):
    for valor in range(2,n+1):
    if éPrimo(valor) == True:
    print(valor,end=" ")
    n = int(input("Entre com um valor: "))
    geraPrimo(n)

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo