. Números primos em um intervalo
Escreva um programa que receba dois números inteiros e exiba todos os números primos dentro desse intervalo.
Escreva um programa que receba dois números inteiros e exiba todos os números primos dentro desse intervalo.
Passo 1
Beleza, a questão pede um programa que receba dois inteiros (digamos
e
) e mostre todos os números primos entre eles. O conteúdo aqui é: definição de número primo, laços de repetição (para percorrer o intervalo) e teste de primalidade (verificar se um número é primo). Vamos precisar de:
- Saber o que é primo (só divisível por 1 e por ele mesmo).
- Como testar isso de um jeito eficiente (testar divisores até
). - Estruturas de controle (loops e condicionais) para implementar o programa.
Passo 2
Primeiro, normalizar o intervalo: garantir que a gente percorra do menor para o maior. Se o usuário digitar
, trocamos eles. Assim, chamamos de
start = min(a, b)
e end = max(a, b)
.Passo 3
Agora, precisamos de uma função que diga se um número
é primo. A ideia é:
- Se
, não é primo. - Para
, tentar dividir por todos os inteiros de 2 até . - Se algum
dividir exatamente ( ), não é primo. Caso contrário, é primo.
Teoria rápida: não faz sentido testar divisores maiores que
porque, se
e ambos forem maiores que
, o produto seria maior que
. Então todo divisor não-trivial aparece em um par
em que pelo menos um é
.
Passo 4
Com a função de primalidade pronta, é só:
- Fazer um loop
for x in start..end
. - Se
isPrime(x)
for verdadeiro, imprimirx
.
Isso lista todos os primos no intervalo.
Resposta
função isPrime(n):
se n ≤ 1 então
retorne falso
limite ← floor(√n)
para d de 2 até limite faça
se n mod d = 0 então
retorne falso
retorne verdadeiro
início do programa:
leia a, b
start ← min(a, b)
end ← max(a, b)
para x de start até end faça
se isPrime(x) então
escreva x