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:
- O que estudar
- Como estudar programação da maneira correta
- O que é importante estudar
- Quais linguagens é bom saber
- Qual a melhor a melhor linguagem de programação
- Como entrar no mercado do trabalho
- Como se portar corretamente numa entrevista de emprego
- 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.
![Determinar se o número é primo Checar se um número é primo](https://4.bp.blogspot.com/-y6Expat6aqE/WyMbR_93c9I/AAAAAAAAB2k/x7VH-MFjUPkONrKXH3kpkW784Nq1BKsHACLcBGAs/s320/numeros-primos-python.png)
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 LoopsInicialmente, 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.
n = int(input("Digite um número inteiro: "))
ResponderExcluircont = 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")
Não funciona para n=1!
Excluircount = 0
ResponderExcluirn = 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')
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
ResponderExcluirif mult == 0 and n >=2:
acho bom corrigir, apesar de ser um pequeno erro ainda é um erro
n = int(input("Digite um número inteiro: "))
ResponderExcluiri = 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")
num = input("Digite o número: ")
ResponderExcluirnum = 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")
n1 = int(input('digite um numero para saber se ele é primo:'))
Excluirc = 0
for i in range(2, n1+1):
if n1 % i== 0:
c = c+1
if c <= 2:
print('O numero {} é divisivel {} vezes portanto ele é um numero primo'.format(n1, c+1))
else:
print('O numero {} é divisivel {} vezes, portanto ele não é um nuero primo'.format(n1,c))
num = int(input("Enter a number: "))
ResponderExcluirif 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?
Você pode fazer uma lista e preencher ela.
Excluirdef 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.
– Desenvolva uma classe que apresente todos os números primos existentes entre N1 e N2, em que N1
ResponderExcluire N2 são números naturais fornecidos. Um número é primo quando é divisível somente por ele e pela unidade
(1).
Alguem pode me dar uma luz de como fazer????
def numeroprimo(a,b):
Excluirx=0
y=0
for y in range(a, b+1):
for i in range (2, y):
resto = (y % i)
if y!=i and y!=1 and resto!=0:
x +=resto
else:
x=0
break
if x > 0 or y==2:
print(y)
y+=1
numeroprimo(998983, 999983)
Alguém consegue me dar uma ajuda no exercício abaixo?
ResponderExcluirNúmeros primos são números naturais maiores que 1 e não são produtos de dois outros números naturais positivos. Por exemplo, 5 é um número primo, pois não existe par de números entre 2 e 4 cuja multiplicação é igual a 5. Já 6 não é um número primo, pois existe um par entre 2 e 5 cujo resultado é igual a 6, o par é 2 e 3. Números primos são muito úteis em computação e despertam a curiosidade de matemáticos há séculos. Para essa oficina, você vai usar uma definição diferente, da apresentada acima, mas equivalente. Observe: um número X é primo se para todo número N entre 2 e X – 1, o resto da divisão entre X e N é diferente de 0. Seguindo essa lógica, desenvolva um notebook Jupyter com um programa Python que apresente textualmente todos os números primos entre 2 e 100 (incluindo o valor 100). Para tal, seu programa deve percorrer todos os números nesse intervalo e testar individualmente cada um, vendo se ele é primo ou não. Caso o número seja primo, você deve imprimir o valor em tela, caso não seja, deve simplesmente ignorá-lo.
l = []
ResponderExcluira = int(input())
for i in range(1, a+1):
(l).append(a%i)
r = (l.count(0))
if r == 2:
print('primo')
else:
print('não é primo')
Funciona!
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirfiz um algoritmo bem simples e fácil de ser compreendido:
ResponderExcluirdef prime_checker(number): #AQUI DECLARO MINHA FUNCAO
divisor = 0 #CRIO UMA VARIAVEL QUE VAI CONTAR O NUMERO DE DIVISORES
if number != 0 and number != 1: #ELIMINO 0 1 JA QUE ELE NAO SAO PRIMOS
for c in range(1 , number +1):#CONTADOR QUE DESCOBRE QUANTOS NUMEROS SAO DIVISIVEIS
if number % c == 0: #SE O NUMERO FOR DIVISIVEL POR C, É ACRESCENTADO + 1 NO DIVISOR
divisor += 1
if divisor == 2: #TERMINADO O FOR, SE DIVISOR FOR IGUAL A 2 (1 E ELE MESMO) É PRIMO
print("Numero primo")
else:
print("Numero nao primo")
else:
print("Numero não primo")
num=int(input("Digite um numero: "))
ResponderExcluirfor cont in range(2,num):
if num%cont==0:
print("Não é primo")
break
else:
print("É primo")
considerando procurar se o numero 10001 se é primo ou nao,
ResponderExcluiro resultado foi de 2 multiplo ( 73, 137)
no caso o programa poderia ir ate o giro 137, nao precisa fazer ele dividir por ate 9999 no caso, para descobrir se é primo, pois qqer numero acima de 137, nao vai ter resultado 0. assim diminiu o tempo de processamento. como limitar isso?
Voce pode calcular R como raiz quadrada de n e testar o 2 e os impares apenas até R. tsso reduz bastante. Ex : para 10001 R é 100 (aprox.) Teste apenas 2,3,5,7,...99. Veja que 137 = 10001 / 73(que vc já encontra antes do 99)
Excluirnum = int(input('Verificar se número é primo: '))
ResponderExcluirdiv = 0
for i in range(1, num+1): # Para i em uma distância de 1 a num + 1.
----if num % i == 0: # Se houver divisores sem resto, entre neste bloco e adicione +1 na variável div.
--------div += 1
if div == 2: # Ao sair do laço for, verifique se div é igual a 2. (Número divisivel por 1 e por ele mesmo).
----print('Primo')
else: # Se for maior ou menor que 2, diga que não é primo.
----print('Não primo')
num = int(input('Verificar se número é primo: '))
ResponderExcluircontador, divisores = 1, 0
while True:
----if num % contador == 0: # Verifica se não sobra resto na divisão do num pelo contador.
--------divisores += 1 # Se não sobrou, adiciona + 1 para variável divisores.
----contador += 1 # Depois do if, aumenta + 1 no contador
----if contador == num+1: # Se o contador for igual o número + 1 que vc quis verificar, entre neste bloco.
--------if divisores == 2: # Verifica se tem só 2 divisores (Dividido por 1 e por ele mesmo).
------------print('É primo.')
------------break # Se for primo, diga que é primo e pare o programa.
--------else:
------------print('Não é primo.')
------------break # Senão, diga que não é primo e pare o programa
n = int(input('Digite o número: '))
ResponderExcluircontador = 1
contador1 = 0
while contador <= n:
if n % contador == 0:
contador1 = contador1+1
contador = contador+1
if contador1==2:
print('O número é primo!')
else:
print('O número não é primo!')
n = int(input('Digite o número: '))
ResponderExcluircontador = 1
contador1 = 0
while contador <= n:
if n % contador == 0:
contador1 = contador1+1
contador = contador+1
if contador1==2:
print('O número é primo!')
else:
print('O número não é primo!')
tenho uma dúvida sobre esse contador 1, de onde vem o valor que define ele como igual a 2 ou não?
Excluirtá errado esse código, no final do loop precisa zerar o mult += 1
ResponderExcluirme ajude com esse exercico :Implemente uma função que, dado um número n maior que 2, devolve uma String com todos os
Excluirnúmeros primos menores ou iguais a n, separados por espaços em branco.
Me ajuda nesse exercício :
ResponderExcluirImplemente uma função que, dado um número n maior que 2, devolve uma String com todos os números primos menores ou iguais a n, separados por espaços em branco.
ex: primo(10)
"2 ,3, 5, '
n = int(input("Verificar numeros primos ate: "))
ResponderExcluirmult=0
count=2
while count<=n:
if (n % count == 0):
print("Múltiplo de",count)
mult += 1
count=count+1
if(mult==1):
print("É primo")
else:
print("Tem",mult," múltiplos acima de 2 e abaixo de",n)
A solução acima foi escrita por mim, contudo, saiu como Desconhecido. Eu achei essa solução como a mais simples.
ResponderExcluirEscreva um programa em Python que recebe um número inteiro. O programa deve apresentar
ResponderExcluiruma mensagem ao usuário destacando:
• o tipo
• se o número é par ou ímpar
• se é múltiplo de 4
• se é primo
Consegui realizar uma parte, porém na parte de ver se o nunero é primo não consegui algm pode me ajudar ?
num = int(input("Digite um numero:"))
print(type (num))
resultado = num % 2
if resultado == 0:
print(num,"é um numero par")
else:
print(num,"é um número ímpar")
if not(num % 4):
print(num,"é multiplo de 4")
else:
print(num,"Nao é multiplo de 4")
alguem pode me ajudar?
ResponderExcluirEscreva um programa que mostre todos os números primos de 1 a 1000000.
com a função def eh_primo:
#Com laço for:
ResponderExcluirnum = int(input("Entre com um número inteiro: "))
for valor in range(2,num):
if num % valor == 0 or num == 1:
print(num,"não é primo")
break
else:
print(num,"é primo")
#------------------------------#
#Com while:
n = int(input("Digite um número inteiro: "))
i = 1
primo = 0
while i <= n:
if n % i == 0:
primo+=1
i+=1
if primo == 2:
print("primo")
else:
print("não primo")
def éPrimo(k):
ResponderExcluirdivisor = k - 1
resto = 1
if k == 1:
resto = 0
else:
while divisor > 1 or resto > 1:
resto = k % divisor
divisor = divisor - 1
if(divisor == 1 and resto > 0):
return True
else:
return False
Correção do último código postado:
ResponderExcluirdef éPrimo(k):
divisor = k - 1
resto = 1
if k == 1:
resto = 0
else:
while divisor > 1 and resto != 0:
resto = k % divisor
divisor = divisor - 1
if(divisor == 1 and resto > 0):
return True
else:
return False
def eh_primo(n):
ResponderExcluirif n >= 2:
for c in range(2, n):
if n % c == 0:
return False
return True
else:
raise ValueError('Número deve ser maior ou igual a 2.')
def eh_primo(n):
ResponderExcluirif n >= 2:
for c in range(2, n):
if n % c == 0:
return False
return True
else:
raise ValueError('Número deve ser maior ou igual a 2.')
numero = int(input("Digite um valor: "))
ResponderExcluirn = 2
mult = 0
while n <= numero:
if numero % n == 0:
mult += 1
n += 1
if mult == 1:
print("e primo")
else:
print("nao e primo")
numero = int(input("Digite um valor: "))
ResponderExcluirn = 2
mult = 0
while n <= numero:
if numero % n == 0:
mult += 1
n += 1
if mult == 1:
print("e primo")
else:
print("nao e primo")
muito sexo
ResponderExcluirn1 = int(input('Digite um número para saber se ele é primo: '))
ResponderExcluirn = 0
for l in range(n1-1,2,-1):
if ( n1 / l ).is_integer() == True :
n += 1
if n == 0 :
print(n1,'É primo')
else: print(n1,'Não é primo')
def primo(numero):
ResponderExcluircont = 1
for c in range(1,numero):
if (numero) % c == 0 :
cont += 1
if cont == 2 :
return True
else:
return False
for i in range(1,101):
if primo(i) is True:
print(i)