Faça um programa que some os números primos existentes entre
e
, onde
e
são números informados pelo usuário.
Passo 1
O enunciado pede um programa que, dados dois inteiros informados pelo usuário \ a e \ b, calcule a soma de todos os números primos existentes no intervalo [\ a, \ b]. O conteúdo aqui envolve testagem de primalidade e iteração sobre um intervalo, e vamos precisar de um método eficiente para verificar se um número é primo.
Passo 2
Primeiro a gente garante que o intervalo esteja em ordem crescente. Se \ a for maior que \ b, trocamos os valores para sempre iterar de um limite inferior para o superior.
Para testar se um número \ n é primo, usamos o método de divisão até \ \sqrt{n}. A ideia é que, se \ n tiver um divisor próprio, ele estará em algum lugar entre 2 e \ \sqrt{n}. Além disso, depois de checar a divisibilidade por 2, podemos pular todos os pares e testar apenas os ímpares.
Para testar se um número \ n é primo, usamos o método de divisão até \ \sqrt{n}. A ideia é que, se \ n tiver um divisor próprio, ele estará em algum lugar entre 2 e \ \sqrt{n}. Além disso, depois de checar a divisibilidade por 2, podemos pular todos os pares e testar apenas os ímpares.
Passo 3
Ao longo da iteração de cada número \ n no intervalo, fazemos o teste de primalidade. Se for primo, somamos \ n a um acumulador.
Passo 4
No final, imprimimos o valor do acumulador, que é a soma de todos os primos no intervalo.
Resposta
Programa em Python para somar primos entre a e b
def eh_primo(n):
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
i = 3
# Testa divisores ímpares até sqrt(n)
while i * i <= n:
if n % i == 0:
return False
i += 2
return True
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
i = 3
# Testa divisores ímpares até sqrt(n)
while i * i <= n:
if n % i == 0:
return False
i += 2
return True
Leitura dos valores
a = int(input("Digite o valor de a: "))
b = int(input("Digite o valor de b: "))
b = int(input("Digite o valor de b: "))
Ajusta limites caso estejam invertidos
if a > b:
a, b = b, a
a, b = b, a
soma = 0
Itera de a até b incluindo ambos
for num in range(a, b + 1):
if eh_primo(num):
soma += num
if eh_primo(num):
soma += num
print(f"Soma dos números primos entre {a} e {b}: {soma}")