Faça um programa que conte quantos números primos existem entre a e b, onde a e b são números informados pelo usuário.

Passo 1

O programa deve contar quantos números primos existem no intervalo fechado de a até b. O conteúdo envolvido é teste de primalidade usando divisão até raizn, além de estruturas de repetição e condicionais.

Passo 2

Primeiro, lemos dois inteiros a e b fornecidos pelo usuário. Para simplificar a iteração, verificamos se a>b e, nesse caso, trocamos os valores para sempre iterar de um menor para o maior.
Inicializamos um contador em 0 para acumular quantos números primos encontramos.

Passo 3

Para cada número n no intervalo de a até b (inclusive), verificamos se n>=2. Números menores que 2 não são primos e podem ser pulados.
Implementamos a função is_primo(n) que testa se n é primo. Ela itera i de 2 até lfloorraiznrfloor. Se algum i dividir n exatamente, retornamos False; caso contrário, retornamos True.
Sempre que is_primo(n) retorna True, incrementamos o contador.

Passo 4

Ao final, exibimos o valor do contador, que é a quantidade de números primos no intervalo.

Resposta

import math

def is_primo(n):
    if n < 2:
        return False
    limite = int(math.sqrt(n))
    for i in range(2, limite + 1):
        if n % i == 0:
            return False
    return True

def contar_primos(a, b):
    # garante que a <= b
    if a > b:
        a, b = b, a
    contador = 0
    for n in range(a, b + 1):
        if is_primo(n):
            contador += 1
    return contador

def main():
    a = int(input("Digite o valor de a: "))
    b = int(input("Digite o valor de b: "))
    total = contar_primos(a, b)
    print(f"Existem {total} números primos entre {a} e {b}.")

if __name__ == "__main__":
    main()

Exercícios relacionados