É um exercício resolvido de nossa lista de questões de funções.
Leia também:
- Certificado do Curso de Python (para quem deseja trabalhar como programador)
- Conteúdo do Python Progressivo em PDF
Como Saber se um Número é Primo em Python
Primeiro, vamos criar uma função chamada primo( n ) que recebe um inteiro positivo n como parâmetro.
Devemos testar esse valor n para saber se ele é primo ou não.
Relembrando: número primo é aquele que é divisível somente por 1 e por ele mesmo (por -1 e -ele também).
Ou seja, o resto da divisão por 2, 3, 4..., até n-1 tem que ser diferente de 0.
Lembra do operador % - resto da divisão ?
Pois é, foi usado pra saber se um número é par ou não, agora vamos usar para detectar um número primo.
Dentro da primo() simplesmente saímos calculando o resto da divisão de n por 2, por 3, ...até n-1.
Se der 0, fazemos return False, pra dizer que o número não é primo.
Se após todos esses testes do laço for ele não der False, é porque é verdade esse bilete...digo, ele é primo e damos um return True.
- Código dessa função:
def primo(n): for val in range(2,n): if n % val == 0: return False return True
Exibindo números primos em um intervalo
Ok, já sabemos testar se um número é primo ou não.
Agora precisamos exibir todos os primos de 1 até n.
Vamos fazer isso através da função exibe(), que vai pedir um inteiro positivo maior que 1 para o usuário.
A seguir, vamos criar um laço for que vai testar os números 2, 3, 4, ... até o n, pra saber se cada um desses valores é primo.
Se for, imprime ele. Fazemos isso usando a função range:
def exibe(): n = int(input('Exibir primos até o número: ')) for val in range(2,n+1): if(primo(val)): print(val)
Código Python
Nosso script que descobre e exibe os números primos é, portanto:
def primo(n): for val in range(2,n): if n % val == 0: return False return True def exibe(): n = int(input('Exibir primos até o número: ')) for val in range(2,n+1): if(primo(val)): print(val) while True: exibe()
- Exercício proposto:
Otimize o código acima de duas maneiras:
- Faça a função primo() testar os valores até n/2 ao invés de n
- Faça a função primo() testar até a raiz quadrada de n
Descubra o motivo das otimizações acima.
Rapaz, passei perto da resolução correta. Errei só um pouquinho kkkkkk. Mas, enfim, segue o meu código:
ResponderExcluirimport time
def verificar_numero_primo(n):
if n==1:
return False
elif n==2:
return True
else:
for count in range(2, n):
if n%count==0:
return False
else:
continue
return True
def exibir(dado_num):
for count in range(1, dado_num):
if verificar_numero_primo(count)==True:
print(count)
time.sleep(1.3)
def entrada():
num = int(input('Exibi númerus primos de 1 até:'))
exibir(num)
while True:
entrada()
def éPrimo(valor):
ResponderExcluiri = 2
primo = True
while i < valor and primo:
div = valor % i
if div == 0:
primo = False
i+=1
if primo:
return True
else:
return False
def geraPrimo(n):
for valor in range(2,n+1):
if éPrimo(valor) == True:
print(valor,end=" ")
n = int(input("Entre com um valor: "))
geraPrimo(n)