Escrever um programa que calcula e escreve a soma dos números primos entre 92 e 1478.
Passo 1
O enunciado pede um programa que calcule e escreva a soma dos números primos entre 92 e 1478. O conteúdo principal é detecção de números primos e acumulação de um somatório. Para resolver de forma eficiente, vamos usar o Crivo de Eratóstenes para gerar todos os primos até 1478 e depois somar aqueles que estão no intervalo desejado.
Passo 2
Implementar o Crivo de Eratóstenes:
- Definimos um vetor booleano
is_prime
de tamanho, inicialmente com todos os valores True
, exceto índices 0 e 1 que não são primos. - Para cada inteiro
de 2 até , se is_prime[p]
forTrue
, marcamos comoFalse
todos os múltiplos de(a partir de ).
Passo 3
Após executar o crivo, é primo para todo
. Agora basta percorrer
de 92 até 1478, verificar em uma variável
is_prime[i]
indica se
is_prime[i]
e, se for True
, acumular
soma
.Passo 4
Ao final da varredura,
soma
conterá a soma de todos os números primos no intervalo. Por fim, imprimimos esse valor na tela.Resposta
def \(soma_primos_ate\)(n):
# Crivo de Eratóstenes
\(is_prime\) = [True] * (n \(+1\))
\(is_prime\)[0] = \(is_prime\)[1] = False
p \(=2\)
while p * p <= n:
if \(is_prime\)[p]:
for múltiplo in range(p * p, n \(+1\), p):
\(is_prime\)[múltiplo] = False
p \(+=1\)
return \(is_prime\)
def main():
\(limite_inferior =92 limite_superior =1478 is_prime\) = \(soma_primos_ate\)(\(limite_superior\))
soma \(=0\)
for i in range(\(limite_inferior\), \(limite_superior +1\)):
if \(is_prime\)[i]:
soma \(+=\) i
print(soma)
if __name__ \(==\) "__main__":
main()