Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida em código para detectar números primos


Lucas Snts

Pergunta

def primo(num):
   
    for i in range(2,21):#for i in range(1,20):
        if num==i:#num==i+1
            continue
        
        if num%i==0:#if num%i+1==0:
            return False         
        else:return True
               
        


for i in range(1, 20):
    if primo(i+1):
            print(i+1, end=" ")
print()


#Output atual (correto):2 3 5 7 9 11 13 15 17 19
#Output antigo(errado):2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
 

Boa noite, fiz esse código que mostra na tela os números primos entre 1 e 20. Eu estava tendo dificuldades para conseguir o output esperado (que está comentado na penúltima linha), essa dificuldade aconteceu pois dentro do corpo da função "primo" eu estava usando as linhas que lá estão comentadas ao invés das que estão sendo usadas agora, e com isso, o output estava sendo toda a sequência de números de 2 até 20. Eu resolvi tal problema transformando as linhas que estão comentadas na função para o modo em que elas estão agora, no entanto, eu não entendi o motivo de os dois modelos darem resultados diferentes, sendo que nos cálculos que fiz enquanto programava, ambas as formas deveriam dar o output correto.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Não da pra responder sua dúvida de o porque um achou certo e o outro achou errado no seu porque no caso o código não ta exatamente encontrando os números primos, ele ta fazendo só uma verificação de coincidência do for. Por sorte até 20 ele encontra os valores corretos, mas se você aumentar o range pra mais ele vai fazer errado!

Um exemplo resumido do que você tava fazendo que da mais certo é tipo assim: 
def primo_():
    lista = []
    for num in range(1, 21):
        for i in range(1, 21):
            if num % i == 0:
                lista.append(num)
        if len(lista) ==2: 
            print(num)
        lista = []

primo_()

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...