Faça um programa que mostre todos os primos entre 1 e N sendo N um número inteiro fornecido pelo usuário.
Só consegui dizer se n é primo, mas não consegui implementar para o intervalo. Por enquanto só aprendi if/else e whilen = int(input("Digite um número: "))x = 1cont = 0while x
para implementar nesse intervalo vc pode usar um laço for ao invés de while (for i in range(1, n+1) em python). Nesse caso, em cada iteração i aumenta 1, até que chegue a N (o laço não vai ser executado pra N+1), basta você verificar dentro de cada iteração se o valor i é primo ou não e armazenar/imprimir caso seja
def main():
'''
Programa que lê um inteiro positivo n e imprime uma mensagem
indicando se ele é ou não triangular.
Observacao: um número inteiro é primo se ele é maior do que 1
e seus únicos divisores são ele mesmo e 1.
Assim, 1 não é primo.
Exemplos de execução
Digite o valor de n (n > 0): 1
1 não é primo
Digite o valor de n (n > 0): 4
4 não é primo
Digite o valor de n (n > 0): 27644437
27644437 é primo
'''
print("Determina se um número n > 0 é primo\n")
# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# n é primo até que se prove o contrário
é_primo = True
# procure por um divisor de n entre 2 e n-1
divisor = 2
while divisor < n and é_primo: # equivalente a "div... and é_primo == True:"
if n % divisor == 0:
é_primo = False
divisor += 1
if é_primo and n != 1: # 1 não é primo
print(n, "é primo")
else:
print(n, "não é primo")
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
main()
#------------------------------------------------------------------
# Solução 2: Conta os divisores de n entre 1 e n
#
#------------------------------------------------------------------
def main():
'''
Programa que lê um inteiro positivo n e imprime uma mensagem
indicando se ele é ou não triangular.
Observacao: um número inteiro é primo se ele é maior do que 1
e seus únicos divisores são ele mesmo e 1.
Assim, 1 não é primo.
Exemplos de execução
Digite o valor de n (n > 0): 1
1 não é primo
Digite o valor de n (n > 0): 4
4 não é primo
Digite o valor de n (n > 0): 27644437
27644437 é primo
'''
print("Determina se um número n > 0 é primo\n")
# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# inicialize o contador de número divisores de n
cont_divisores = 0
# conta o número de divisores entre 1 e n
for divisor in range(1,n+1):
if n % divisor == 0:
cont_divisores += 1
# imprima mensagem
if cont_divisores == 2:
print(n, "é primo")
else:
print(n, "não é primo")
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
main()
#------------------------------------------------------------------
# Solução 3: Essencialmente idêntica à solução 1, um pouco mais
# eficiente já que dentro do while só testa divibilidade
# por números ímpares.
#
#------------------------------------------------------------------
def main():
'''
Programa que lê um inteiro positivo n e imprime uma mensagem
indicando se ele é ou não triangular.
Observacao: um número inteiro é primo se ele é maior do que 1
e seus únicos divisores são ele mesmo e 1.
Assim, 1 não é primo.
Exemplos de execução
Digite o valor de n (n > 0): 1
1 não é primo
Digite o valor de n (n > 0): 4
4 não é primo
Digite o valor de n (n > 0): 27644437
27644437 é primo
'''
print("Determina se um número n > 0 é primo\n")
# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# n é primo até que se prove o contrário
if n == 2 or (n != 1 and n % 2 == 1): # 2 é primo , 1 não é primo
é_primo = True
else:
é_primo = False # pares maiores que 2 não são primos
# procure por um divisor ímpar de n entre 2 e n-1
divisor = 3
while divisor < n and é_primo: # equivalente a "div ... and é_primo == True:"
if n % divisor == 0:
é_primo = False
divisor += 2
if é_primo:
print(n, "é primo");
else:
print(n, "não é primo");
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
main()
#------------------------------------------------------------------
# Solução 4: Essencialmente idêntica à solução 3, um pouco mais
# eficiente já que dentro do while só testa divibilidade
# por números ímpares menores que n//2.
#
# Poderíamos ainda usar o fato de que se um número
# n possui um divisor maior que 1, então ele possui
# um divisor maior que 1 e menor ou igual a raiz quadrada
# de n.
#
#------------------------------------------------------------------
def main():
'''
Programa que lê um inteiro positivo n e imprime uma mensagem
indicando se ele é ou não triangular.
Observacao: um número inteiro é primo se ele é maior do que 1
e seus únicos divisores são ele mesmo e 1.
Assim, 1 não é primo.
Exemplos de execução
Digite o valor de n (n > 0): 1
1 não é primo
Digite o valor de n (n > 0): 4
4 não é primo
Digite o valor de n (n > 0): 27644437
27644437 é primo
'''
print("Determina se um número n > 0 é primo\n")
# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# n é primo até que se prove o contrário
if n == 2 or (n != 1 and n % 2 == 1): # 2 é primo , 1 não é primo
é_primo = True
else:
é_primo = False # pares maiores que 2 não são primos
# procure por um divisor ímpar de n entre 2 e n-1
divisor = 3
while divisor < n // 2 and é_primo: # equivalente a "div ... and é_primo == True:"
if n % divisor == 0:
é_primo = False
divisor += 2
if é_primo:
print(n, "é primo");
else:
print(n, "não é primo");
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
main()
Compartilhar