Prévia do material em texto
Para resolver esse problema, vamos dividir a implementação em passos claros: ### Passo 1: Entrada de Dados Primeiramente, precisamos receber os números \( n \) e \( m \) como entrada do usuário. Esses números representarão o intervalo no qual queremos encontrar os números primos. O programa deve continuar executando até que tanto \( n \) quanto \( m \) sejam menores ou iguais a um, momento em que o programa deve parar. ### Passo 2: Verificação de Números Primos Um número primo é aquele que é maior que 1 e que não pode ser dividido por nenhum número além de 1 e ele mesmo. Para verificar se um número \( x \) é primo, vamos iterar de 2 até \( \sqrt{x} \) (por eficiência) e verificar se \( x \) é divisível por algum desses números. Se não for divisível por nenhum deles, então \( x \) é primo. ### Passo 3: Saída dos Números Primos Para cada par \( n, m \) fornecido pelo usuário, iremos gerar uma lista dos números primos entre \( n \) e \( m \). Se \( n \) for maior que \( m \), iremos trocar seus valores para garantir que \( n \) seja sempre menor ou igual a \( m \). ### Passo 4: Implementação do Loop Infinito O programa deve continuar solicitando novos pares de números até que ambos \( n \) e \( m \) sejam menores ou iguais a um. Nesse momento, o programa deve encerrar sua execução. ### Exemplo de Implementação em Python: ```python import math def is_prime(num): if num <= 1: return False if num == 2: return True # 2 é primo if num % 2 == 0: return False # Números pares maiores que 2 não são primos # Verifica divisibilidade a partir de 3 até a raiz quadrada de num limit = int(math.sqrt(num)) + 1 for i in range(3, limit, 2): if num % i == 0: return False # Encontrou um divisor, não é primo return True def prime_numbers_between(n, m): if n > m: n, m = m, n # Garante que n seja sempre menor ou igual a m prime_list = [] for number in range(n, m + 1): if is_prime(number): prime_list.append(number) return prime_list def main(): while True: try: n = int(input("Digite o primeiro número (n): ")) m = int(input("Digite o segundo número (m): ")) if n <= 1 or m <= 1: print("Um dos números é menor ou igual a 1. Encerrando o programa.") break primes = prime_numbers_between(n, m) if primes: print(f"Números primos entre {n} e {m}: {primes}") else: print(f"Nenhum número primo encontrado entre {n} e {m}.") except ValueError: print("Entrada inválida. Por favor, digite números inteiros.") if __name__ == "__main__": main() ``` ### Explicação do Código: - A função `is_prime(num)` verifica se um número é primo. - A função `prime_numbers_between(n, m)` gera uma lista de números primos entre \( n \) e \( m \). - O loop `while True` na função `main()` permite que o programa continue solicitando entradas até que seja fornecido um par onde ambos \( n \) e \( m \) sejam menores ou iguais a um, momento em que o programa termina. ### Conclusão: Este programa Python atende aos requisitos especificados, permitindo ao usuário encontrar todos os números primos em um intervalo definido por pares de números fornecidos, enquanto continua a aceitar novas entradas até que a condição de encerramento seja atendida.