Skip to content

Instantly share code, notes, and snippets.

@danielfreitasce
Last active April 19, 2025 13:24
Show Gist options
  • Save danielfreitasce/cf976036957906cc1e56589160ca9215 to your computer and use it in GitHub Desktop.
Save danielfreitasce/cf976036957906cc1e56589160ca9215 to your computer and use it in GitHub Desktop.
[Python 2.0] - Exercícios de final de módulo - 02
# Implemente um programa que responde se um número é primo ou não.
# Você pode assumir que este número não será maior que 10000 (dez mil).
try:
number = int(input("Digite um número inteiro menor ou igual a 10 mil: "))
except ValueError:
print("Por favor, digite um número inteiro válido.")
else:
if number <= 10000:
if number < 2:
print(f"{number} não é um número primo.")
else:
is_prime = True
for i in range(2, int(number**0.5) + 1):
if number % i == 0:
is_prime = False
break
if is_prime:
print(f"{number} é um número primo.")
else:
print(f"{number} não é um número primo.")
else:
print("O número deve ser menor ou igual a 10 mil.")
finally:
print("Fim do programa.")
"""
"int(number**0.5) + 1" no loop "for i in range(2, int(number**0.5) + 1)" otimiza a checagem se é numero primo ou não.
Ao invés de chegar a divisibilidade por todos os números do 2 até number-1,
checamos se o número (number) é divisivel por 2 indo até sua raiz quadrada (number**0.5).
- Se um número "number" é disivil por um inteiro "i", então number = i * j, onde "j" é também disivor de "number";
- Se os dois, "i" e "j" são maiores que a raiz quadrada de "number", então o produto deles excederia "number".
Portanto, pelo menos um dos divisores deve ser menor ou igual à raiz quadrada de "number".
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment