def divisores(n):
"""
Mostra divisores de um número.
"""
for i in range(1,n+1):
if (n % i) == 0:
print i
O ciclo for (início na linha 5) vai gerando em sequência os candidatos a divisores. Na linha 6 a instrução condicional if testa e filtra os que são divisores.
Porque é que, na linha 5 range tem como argumentos 1 e n+1? Bom, a resposta é: porque serão gerados números de 1 a n, devido ao modo como range funciona. Mas não é a melhor solução! Melhor seria usar range(1,n/2). Porquê? Na linha 6, temos o início da instrução condicional mais simples de todas com a sintaxe:
if [condição]:
[bloco]
Podem também existir condicionais de duas vias, como em:
if [condição]:
[bloco_sim]
else:
[bloco_não]
ou mesmo de múltiplas vias:
if [condição_1]:
[bloco_1]
elif [condição_2]:
[bloco]_2
...
else:
[bloco_n]
A semântica desta última construção é a seguinte: percorremos de cima para baixo as condições, e executamos o código da primeira cujo resultado for True. Não havendo nenhuma condição verdadeira executa o bloco associado ao else.
boa noite, sou o rodrigo santos...
ResponderEliminarcontinuei sem perceber a melhor opçao((1,n/2))
cumprimentos
É fácil. Pense num número. 10 por exemplo. Acha que vale a pena tentar divisores acima de 5? Claro que não! Não podem existir divisores maiores do que metade do número. Daí só testar os números até n/2.
ResponderEliminarMuito bom, agora entendi.
ResponderEliminar