Dúvida ao fazer programa que lista os números primos de 0 a 20

Sou novo na programação.
Recentemente tentei fazer esse programa, com o seguinte código:

divisor = 1
divisores = 0

for num in range(1, 20, 1):

if divisores == 2:
    print(num)

if num % divisor == 0:
    divisores += 1
else: divisor += 1

continue

Não consegui fazer ele funcionar e nem entender o problema. Alguma solução?
Obrigado!

Um número primo é todo inteiro positivo que possui apenas um divisor inteiro além de um, ou seja, possui somente dois divisores, um e ele mesmo. Sendo assim, para o número 11, você precisa verificar se ele é divisível por 2, 3, 4, 5, 6, 7, 8, 9 e 10. Se for divisível por um desses do intervalo, 11 não é primo, caso contrário, 11 é primo. Você já tem a garantia que 11 é divisível por 1 e por 11. A ideia é a mesma para qualquer inteiro positivo. Há como acelerar o processo, mas isso é outra história…

Para resolver o seu problema, para cada número n, conte a quantidade de divisores no intervalo de 1 a n. Um número é divisível por outro se o resto da divisão inteira for zero. Se para o número n seu contador, ao varrer todo o intervalo, estiver valendo 2, n é primo, caso contrário (n diferente de 2), n não é primo. É claro, você pode diminuir esse intervalo, removendo o 1 e n, pois você que esses valores são divisores de n

1 curtida

Obrigado!

Se fizer uma busca na internet, vai ver que o que não falta é algoritmo para saber se um número é primo :slight_smile:

Em Python, por exemplo, tem um algoritmo um pouquinho melhor nesse tópico: Números Primos