Números Primos

398 views
Skip to first unread message

Erik Passos

unread,
Jul 4, 2017, 10:20:38 PM7/4/17
to Python Brasil

Boa Noite,

Estou com uma dificuldade, se vocês puderem dar uma luz rsrs, fico agradecido .
Escreva um programa que receba um número inteiro positivo na entrada e verifique se é primo. Se o número for primo, imprima "primo". Caso contrário, imprima "não primo".
Eu já usei com condicional e com repetição , o problema é na hora de imprimir o valor 27, ele imprimi como sendo primo, 27 não é primo, testei outros valores e ele imprime certo os valores, só nesse valor que acontece esse erro, espero a colaboração de vocês, sei que é uma pergunta besta, estou iniciando no mundo da programação. Desde já eu agradeço.
segue meu códigos : 
num=int(input("Digite um numero"))

contador=1

while contador <= num:
    if num%2==1:
    contador=contador+1
    print("primo")
break
   else:
     print("não primo")
break


código 2 :


num=int(input("Digite um numero"))
if num%2==1:
   print("primo")
else:
   print("não primo")

Marcos Thomaz

unread,
Jul 4, 2017, 10:31:27 PM7/4/17
to python...@googlegroups.com
Um número primo é aquele que é divisível por 1 e por ele mesmo (com resultados nos naturais). Ou seja, se fizesse uma repetição dividindo esse número N por todos os números entre 2 e N-1, se não houver nenhum divisor, é primo. Uma forma de otimizar é testar a divisão de 2 até SQRT(n). A propósito, o erro no seu laço while está aqui:   "if num%2==1:". Você testa apenas se ele é divisível por 2.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--


Marcos Thomaz da Silva
Analista de Tecnologia da Informação

Linux - Junior Polegato

unread,
Jul 5, 2017, 4:41:21 AM7/5/17
to Python Brasil
Olá!

Tem bastante coisa sobre primos na lista, mas seu código testa apenas se é ímpar (num % 2 == 1) em vez de primo [1] (a grosso modo, em números naturais primos: num % x != 0 para x sendo primo até √num), um código simples e rápido testando por 2 e ímpares até √num seria:

# Primo de número natural
def primo(num_nat):
    if num_nat == 2:
        return True
    if num_nat < 2 or num_nat % 2 == 0:  # 0, 1 ou par
        return False
    max_div = int(num_nat ** .5)  # √num
    for x in xrange(3, max_div +1, 2):
        if num_nat % x == 0:
            return False
    return True

Veja que para um número da ordem de trilhões, a raiz quadrada fica da ordem de milhões, portanto usaremos alguns megas de memória e menos de um bilhão de ciclos de processamento, que processadores de hoje em dia fazem em menos de um segundo, teste ‘primo(123456789012345)’ ou ‘primo(10968163447)’.



[]'s

Junior Polegato


--

Erik Passos

unread,
Jul 5, 2017, 8:19:40 AM7/5/17
to Python Brasil
Muito Obrigado pela explicação, me ajudou muito. 


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Erik Passos

unread,
Jul 5, 2017, 8:19:51 AM7/5/17
to Python Brasil
Muito Obrigado pela explicação, me ajudou muito. 



---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Welton Vaz

unread,
Jul 5, 2017, 8:54:09 AM7/5/17
to python...@googlegroups.com
Amigo,

Acho que falaram tudo aqui, só como sugestão tem um site em inglês sobre um projeto que
procura números primos de mersenne, eu participo, que tem explicações sobre este números:


em portugues:




  Enviado com Mailtrack



---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--

Welton Vaz de Souza
TWITTER: http://twitter.com/Weltonvaz
BLOG: http://ghandybh.blogspot.com/
FACEBOOK: https://www.facebook.com/weltonv
Cel: (31)9327-0823
***********************************************************

 °v° NÃO USE DROGAS,
/(_)\ USE GNU/LINUX
 ^ ^


 
Reply all
Reply to author
Forward
0 new messages