1. Escreva um método que recebe dois números reais \mathbf{a} e \mathbf{b} e retorna a soma de todos os números primos existentes entre esses dois

Passo 1

O enunciado pede um método que receba dois números reais a e b e retorne a soma de todos os números primos existentes entre eles.
Conteúdo necessário:
– Como converter um intervalo em reais num intervalo de inteiros onde só faz sentido procurar primos.
– Teste de primalidade por divisão até a raiz quadrada.
– Estruturas de controle (condicional, laço) e acumulador para somar.

Passo 2

Definir corretamente os limites inteiros do laço de busca de primos.
  1. Calcule
m = \min(a,b), \quad M = \max(a,b).
  1. Converta para inteiros:
L = \bigl\lceil m\bigr\rceil, \quad U = \bigl\lfloor M\bigr\rfloor.
  1. Ajuste para o domínio dos primos (que só existem para inteiros \ge2):
    – Se U < 2, não há primos no intervalo, o método deve retornar 0.
    – Se L < 2, faça L \leftarrow 2.

Passo 3

Descrever o teste de primalidade de um inteiro n \ge 2.
Um inteiro n é primo se não existir nenhum divisor inteiro d tal que
2 \le d \le \lfloor \sqrt{n}\rfloor
e d divida n sem resto.
Logo, o procedimento isPrime(n) é:
– Se n<2, retorna false.
– Para cada d de 2 até \lfloor\sqrt{n}\rfloor, se n \bmod d = 0 retorna false.
– Se passar por todos, retorna true.

Passo 4

Montar o laço principal que soma os primos no intervalo inteiro [L,U]:
  1. Inicialize um acumulador \mathrm{S} = 0.
  2. Para cada inteiro k de L até U:
    – Se isPrime k for verdadeiro, faça \mathrm{S} \leftarrow \mathrm{S} + k.
  3. Ao final do laço, retorne \mathrm{S}.

Resposta

A seguir, um pseudocódigo que implementa tudo isso:
function somaPrimos(a, b):
 # 1) Ordena os limites
 if a > b:
 swap(a, b)
 # 2) Converte para inteiros
 L = ceil(a)
 U = floor(b)
 # 3) Ajusta domínio de primos
 if U < 2:
 return 0
 if L < 2:
 L \(=2\)
 # 4) Soma primos
 S \(=0\)
 for k from L to U:
 if isPrime(k):
 S = S + k
 return S

function isPrime(n):
 if n < 2:
 return false
 limite = floor(sqrt(n))
 for d from 2 to limite:
 if n mod d \(==0\):
 return false
 return true

Exercícios relacionados