Números primo

2,350 views
Skip to first unread message

Amanda Beuthner

unread,
Mar 16, 2018, 11:02:19 AM3/16/18
to Python Brasil
Estou aprendendo Python, iniciante.

estou aprendendo funções e laços, me deparei com um exercício: 

Escreva a função maior_primo que recebe um número inteiro maior ou igual a 2 como parâmetro e devolve o maior número primo menor ou igual ao número passado à função

Note que

maior_primo(100) deve devolver 97

maior_primo(7) deve devolver 7


Criei a função éPrimo e o laço que ler os números primos, mas não sei como fazer parar apenas no maior. Alguém pode me ajudar?

def éprimo(x):
    fator=1
    if x==2:
        return True
    if x==1:
        return True
    while x%2!=0 and fator<=x:
        fator=fator+1
        if x%fator==0:
            return False
        else:
            return True

n = int(input('digite um número: '))
i=1
while i<=n:
    if éprimo(i):
        print(i)
    i=i+1

Gabriel Farias

unread,
Mar 16, 2018, 11:18:37 AM3/16/18
to Python Brasil
a logica para verificar se o numero é primo está errada.

e voce pode armazenar i em uma variavel primo e mostrar somente o ultimo valor armazenado no final do programa.

Amanda Beuthner

unread,
Mar 16, 2018, 10:40:17 PM3/16/18
to Python Brasil
Gabriel, fiz o algorítimo em que ele imprime os números primos até o nº que é solicitado:
mas como guardo i em uma variável?

Está abaixo o que eu fiz. 
 
def éprimo(x):
    fator= 2
    while x%fator!=0 and fator<=x/2:
        fator=fator+1
    if x%fator==0:
        return False
    else:
        return True


   

n= int(input('Digite um número: '))
i=2
Message has been deleted

Rodolfo S. Carvalho

unread,
Mar 17, 2018, 5:52:38 AM3/17/18
to python...@googlegroups.com
Oi Amanda,

Você está imprimindo todos os primos menores do que o número. Seria interessante, toda vez que você achar um número primo maior que o anterior, guardar esse valor em uma *outra* variável.


PS.: Você está usando acentos nos identificadores do seu código (função "éprimo"), o que em geral não é considerado uma boa prática.

--
--
------------------------------------
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 postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/57cf6571-a3b4-4ab3-b8e0-cfc59b221d10%40googlegroups.com.

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



--
Rodolfo Carvalho
Senior Software Engineer

Luca Bezerra

unread,
Mar 17, 2018, 8:50:56 AM3/17/18
to Python Brasil
Jonatan, por favor não poste suas dúvidas no tópico de outras pessoas se a dúvida não tem relação direta, isso só confunde as coisas.

De qualquer forma, seu problema é que, no cálculo da área do Retângulo, você não está fechando o segundo parêntesis, referente à função int. As duas primeiras linhas dentro desse 'if' deveriam terminar com 2 parêntesis, não 1:
n1 = int(input('Digite o comprimento do retângulo:'))
n2
= int(input('Digite a largura do retângulo:'))

Além disso, na minha opinião, o "continue" dentro dos if's não é necessário, já que não há nenhuma operação sendo feita dentro do loop após eles.

Em sexta-feira, 16 de março de 2018 23:47:24 UTC-3, Jonatan Silva escreveu:
Desculpa não ter a resposta, mas não tem ninguém que possa me ajudar com meu problema



version
= 'Xavier'
print(f'''Bem vindo(a) ao {version}. O que deseja calcular:
      Areas
      Volumes
      Funcoes e Equacoes (FE)
      Potencias
      Radicais
      Trigonometria
      Geometria
      Logica Bivalente (LB)
      Vetores
      Estatistica
      Sucessoes
      Derivadas
      Conjuntos e Probabilidades (CB)
      Logaritimos
      Limites Notaveis (LN)
      Numeros Complexos (NC)'''
)

while True:    
    resposta
= input('>>> ').upper()
   
if resposta == 'AREAS':
       
print('''Qual area deseja calcular:
      Quadrado
      Retangulo
      Triangulo
      Losangulo
      Trapezio
      Poligono Regular
      Circulo
      Cone
      Esfera
      Sair'''
)
       
while True:
            resposta2
= input('> ').upper()
           
if resposta2 == 'QUADRADO':
                n1
= int(input('Digite a medida de um dos lados do quadrado: '))
                r
= print(f'A area do {resposta2} é: {n1*n1}')
               
continue

           
elif resposta2 == 'RETANGULO':
                n1
= int(input('Digite o comprimento do retangulo:')
                n2
= int(input('Digite a largura do retangulo: ')
                r
= print(f'A area do {resposta2} é: {n1}*{n2}={n1*n2}')
               
continue

           
elif resposta2 == 'SAIR':
               
break    
           
   
else:
       
print('erro')




Gabriel Farias

unread,
Mar 17, 2018, 11:27:53 AM3/17/18
to Python Brasil
Oi Amanda,

pra sua logica funcionar é so colocar as 3 linhas em vermelho

def éprimo(x):
    fator= 2
    while x%fator!=0 and fator<=x/2:
        fator=fator+1
    if x%fator==0:
        return False
    else:
        return True


   
primo = 2
n= int(input('Digite um número: '))
i=2
while i<=n:
    if éprimo(i):
       primo = i
    i=i+1
    
print(primo)

Jonatan Silva

unread,
Mar 17, 2018, 11:37:43 AM3/17/18
to Python Brasil
Muito obrigado, eu nem tinha percebido isso
Eu fiquei quebrando muito a cabeça
Mas o erro estava na minha frente
Eu só postei meu erro aqui pois estava desesperado para resolve-lo

Valdemar W. Setzer

unread,
Mar 17, 2018, 10:24:18 PM3/17/18
to Python Brasil
Olá, Amanda, 

Umas observações colaterais:

1. A partir do 5, para gerar os próximos candidatos a primos, some consecutivamente 2 e depois 4; assim você não testa os pares e os múltiplos de 3.

2. E lugar de testar 

fator<=x/2:

teste 

fator<=sqrt(x)

mas calcule a raiz fora do loop para não repetir a calculeira dela.

Já que é principiante, examine a minha folha de consulta


Talvez você a ache útil (ainda faltam alguns tópicos, como a notação lambda).

aaaaaaaaa,

Valdemar W. Setzer - Dept. of Computer Science, University of São Paulo
http://www.ime.usp.br/~vwsetzer - please REPLY TO vwse...@ime.usp.br

Vinicius Assef

unread,
Mar 18, 2018, 1:30:49 AM3/18/18
to python...@googlegroups.com
Prof. Setzer, quanta honra tê-lo em nosso grupo! :-)
> --
> --
> ------------------------------------
> 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-brasi...@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-brasi...@googlegroups.com.
> Para postar nesse grupo, envie um e-mail para
> python...@googlegroups.com.
> Para ver essa discussão na Web, acesse
> https://groups.google.com/d/msgid/python-brasil/a1e42010-3927-45d2-9c2b-acd09e028348%40googlegroups.com.

Valdemar Setzer

unread,
Mar 18, 2018, 12:17:18 PM3/18/18
to python...@googlegroups.com
Olá a todas/os, 

2018-03-18 2:29 GMT-03:00 Vinicius Assef <vinic...@gmail.com>:
Prof. Setzer, quanta honra tê-lo em nosso grupo! :-)

Vinícius, você está me sobre-estimando... 

Estou aqui há muuuito tempo, mas não tenho tido tempo para contribuir. A última participação foi na discussão sobre ensinar Python para crianças -- adivinhe qual foi a minha posição, he he he!

aaaaaaaaaa, 

Valdemar W. Setzer - Dept. of Computer Science, University of São Paulo
http://www.ime.usp.br/~vwsetzer - please REPLY TO vwse...@ime.usp.br 
2018-03-17 23:24 GMT-03:00 Valdemar W. Setzer <set...@gmail.com>:
--
--
------------------------------------
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 em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/SJS6aipZFBo/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/a1e42010-3927-45d2-9c2b-acd09e028348%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--

Welton Vaz

unread,
Mar 19, 2018, 1:11:21 PM3/19/18
to python...@googlegroups.com
Professor Setzer,

Eu já gostava dos textos do Sr. e depois da discussão sobre ensinar programação para crianças
fiquei muito mais interessado! Ler uma posição divergente e muito bom, pesquisei os textos que
foram citados e tb seus textos e já li 3 vezes "OS MEIOS ELETRÔNICOS E A EDUCAÇÃO: Televisão, jogo eletrônico e computador" .

Fora seu site sobre Python que é pagina inicial na minha maquina! Parabéns e obrigado!

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 postar nesse grupo, envie um e-mail para python...@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
 ^ ^


 

Valdemar Setzer

unread,
Mar 19, 2018, 3:25:42 PM3/19/18
to python...@googlegroups.com
Olá a todas/os,

Mil desculpas a todas/os, mas não tenho o endereço de e-mail do Welton para escrever só para ele.

2018-03-19 14:11 GMT-03:00 Welton Vaz <welt...@gmail.com>:
Professor Setzer,

Eu já gostava dos textos do Sr. e depois da discussão sobre ensinar programação para crianças
fiquei muito mais interessado!

Obrigado, é muito reconfortante saber que o meu trabalho está sendo aproveitado.
 
Ler uma posição divergente e muito bom, pesquisei os textos que
foram citados e tb seus textos e já li 3 vezes "OS MEIOS ELETRÔNICOS E A EDUCAÇÃO: Televisão, jogo eletrônico e computador" .

Posso recomendar dois que considero os mais importantes sobre a questão de meios eletrônicos:

1.3 Artigo Os efeitos negativos dos meios eletrônicos em crianças, adolescentes e adultos. Contém mais de uma centena de citações de pesquisas recentes que corroboram muito do que venho afirmando há várias dezenas de anos. Este artigo complementa o 1.1. 



Ambos estão atrasados em relação à penca de artigos que já tenho e teria que citar, mas já contêm muito material. 

Quem é a favor de uso dos meios eletrônicos por crianças e adolescentes simplesmente não conhece a literatura científica a respeito. Ou conhece e quer ficar no comodismo (eles são um verdadeiro anestésico para as crianças).


Fora seu site sobre Python que é pagina inicial na minha maquina! Parabéns e obrigado!

Pelo seu DDD, você é de Minas Gerais. Fique de olho em minhas palestras; de repente posso ser convidado para lá:


Aí podemos nos encontrar e conversar. 

Eric Chiesse

unread,
Mar 19, 2018, 3:30:42 PM3/19/18
to python...@googlegroups.com

welt...@gmail.com

Tá no cabeçalho da mensagem.



---
Eric

--
--
------------------------------------
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 postar nesse grupo, envie um e-mail para python...@googlegroups.com.

mrangel

unread,
Mar 23, 2018, 5:10:26 PM3/23/18
to python...@googlegroups.com
Amanda, conseguiu resolver ???

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 postar nesse grupo, envie um e-mail para python...@googlegroups.com.

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



--
Marcos Rangel Júnior

Bacharel em Ciência da Computação - UCAM -Campos
Graduado em Tecnologia de Automação Industrial - CEFET-Campos
Administrador da lista python-gamedev-brasil
Reply all
Reply to author
Forward
0 new messages