Primos em Python - Como Saber se um Número é Primo ?

Neste nosso Tutorial de Python, vamos falar sobre os números primos.

Vamos te explicar o que é, sua importância, onde são usados e o principal: como criar um programa que checa se um determinado inteiro positivo é um número primo ou não.

Como ser um excelente programador

Bem, chegou a hora de realmente colocar a mão na massa e começar a programar, ok?

Antes, gostaríamos de sugerir o nosso texto 'Como ser um excelente programador', nele a gente vai te orientar sobre:
  1. O que estudar
  2. Como estudar programação da maneira correta
  3. O que é importante estudar
  4. Quais linguagens é bom saber
  5. Qual a melhor a melhor linguagem de programação
  6. Como entrar no mercado do trabalho
  7. Como se portar corretamente numa entrevista de emprego
  8. A característica mais importante que um programador deve ter

É simplesmente tudo que eu gostaria de saber antes de começar minha carreira de programador. Se eu tivesse lido o texto no início de meus estudos, teria aprendido programação bem mais rapidamente e mais corretamente. Sério, não deixem de ler, vai mudar sua vida.

Acesse nossa apostila para ler:


Os Números Primos

Um número é dito primo quando é possível dividir ele (divisão de inteiro com inteiro) por 1 e por ele mesmo.

Exemplos de números primos:
2, 3, 5, 7,  11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373 ...

Pode sair tentando dividir esses daí por outro número menor, que não seja 1 ou ele mesmo, que não vai conseguir.


Exemplos de números que não são primos:
4: É possível dividir por 1, 2, e 4
6: É possível dividir por 1, 2, 3 e 6
8: É possível dividir por 1, 2, 4 e 8
2112: É divisível por 2 3 4 6 8 11 12 16 22 24 32 33 44 48 64 66 88 96 132 176 192 264 352 528 704 e 1056

Primos: Para que servem ?

Não, não é um conjunto inútil e sem sentido de números.
Se fosse, nem seriam estudados.

O assunto número primo é um dos mais pesquisados, estudados e misteriosos da história da humanidade.

Até hoje, não se tem uma fórmula para se criar números primos.
Ainda não descobriram um 'padrão' definitivo.

Um dos usos mais importante é no ramo da criptografia, principalmente com o algoritmo do sistema RSA.

Existem dois tipos de cigarras que possuem ciclos de vida de 13 e 17 anos, assim somente a cada 221 anos elas tem que dividir a floresta quando saem da terra, evitando se encontrar, o que prejudicaria sua permanência na natureza.

Enfim, se pesquisar na internet, vai achar uma infinidade de coisas onde os números primos estão metidos no dia-a-dia.

Há até quem use os números primos para ganhar na Mega-Sena.

Checar se um número é primo

Como Determinar e Verificar se um Número é Primo em Python

Vamos ver o problema que deu origem a este tutorial de Python, de nossa Lista de Exercícios de Laços e Loops


Inicialmente, pedimos um número inteiro e positivo para o usuário e armazenamos na variável n.

Vamos armazenar na variável mult o número de múltiplos que existe de 2 até n-1.

Ou seja, do intervalo (2, 3, 4, ..., n-1)
Isso é obtido usando a função range: range(2,n).

Vamos usar a variável count pra receber cada um desses valores, dentro desse intervalo.

Dentro do looping, temos que testar se o resto da divisão de n por count vai ser 0. Se for, é porque n é múltiplo de count, logo não é primo.

A medida que nosso programa ai encontrando múltiplos, conta eles na variável mult e exibe na tela.

Após terminar o laço, testamos o valor de mult.
Se permanecer zerado, é porque o número fornecido pelo usuário é primo.

Vejamos nosso código Python:

n = int(input("Verificar numeros primos ate: "))
mult=0

for count in range(2,n):
    if (n % count == 0):
        print("Múltiplo de",count)
        mult += 1

if(mult==0):
    print("É primo")
else:
    print("Tem",mult," múltiplos acima de 2 e abaixo de",n)

Desafio: crie um script em Python que checa se um número fornecido pelo usuário é primo ou não, usando laço while dessa vez.

Poste no comentário sua solução.


7 comentários:

  1. n = int(input("Digite um número inteiro: "))
    cont = 0
    i = 0

    while i <= n or cont < 2:
    i = i + 1
    x = n % i
    if x == 0:
    cont = cont + 1

    if cont <= 2:
    print("primo")
    else:

    print("não primo")

    ResponderExcluir
  2. count = 0
    n = int(input('Número: '))
    mult = 0

    while mult <= n or count < 2:
    mult += 1
    p = n % mult
    if p == 0:
    count += 1
    print('Multiplos ', mult)
    if count <= 2:
    print('Primo')
    else:
    print('Não é primo')

    ResponderExcluir
  3. eu vi um erro nesse programa, ao colocar se a resposta for 1 ele vai dar que é primo, apesar de 1 não ser primo,então pra resolver eu coloquei
    if mult == 0 and n >=2:
    acho bom corrigir, apesar de ser um pequeno erro ainda é um erro

    ResponderExcluir
  4. n = int(input("Digite um número inteiro: "))

    i = 2
    res = False

    while i < n and not res:
    x = n % i
    if x == 0:
    res = True
    i += 1

    if res:
    print("não primo")
    else:
    print("primo")

    ResponderExcluir
  5. num = input("Digite o número: ")
    num = int(num)
    div = 2
    primo = True
    mini = num/2

    while div <= mini:
    if num%div == 0:
    primo = False
    print("É divisível por: ", div)
    div += 1
    if num <= 1:
    primo = False

    if primo == True:
    print("É primo")
    else:
    print("Não é primo")

    ResponderExcluir
  6. num = int(input("Enter a number: "))

    if num > 1:
    for i in range(2,num):
    if (num % i) == 0:
    print(num,"is not a prime number")

    break
    else:
    print(num,"is a prime number")

    else:
    print(num,"is not a prime number")

    Pessoal, este programa está rodando! :)
    Porém, além disso, eu quero saber os divisores de um número que não for primo.

    Por exemplo: 45 não é primo e seus divisores são: 1,3,5,9,15,45.

    Como posso aplicar isto nesse código? Alguém sabe?

    ResponderExcluir
    Respostas
    1. Você pode fazer uma lista e preencher ela.

      def extra():
      ....x, mult = 2, 0
      ....n = 45 #Estou colocando o 45 conforme exemplo que você pediu.
      ....lista = []
      ....while(x<n):
      ........if(n % x == 0):
      ............lista.append(x)
      ............mult += 1
      ........x+=1
      ....else:
      ........if(mult==0):
      ............print("É primo.")
      ........else:
      ............print(n,"não é primo e seus divisores são:", lista)

      Obs.: Substitua os pontos por espaços.

      Excluir