Faça uma função Python para retornar o primorial de n (ou n#) que é a multiplicação de todos os primos de dois até n.
Ex1: se n for 5 então n# será 5 times 3 times 2=30
Ex2: se n for 6 então n # será 5 times 3 times 2=30
Ex3: se n for 7 então n # será 7 times 5 times 3 times 2=210
Por definição matemática o primorial de um é um e o primorial de qualquer número menor que um é indefinido (em Python None, pois basta usar return sem valor algum)

Passo 1

Beleza, vamos resolver esse exercício juntos! A questão pede para criarmos uma função em Python que calcule o primorial de um número n, representado por n#. O primorial de n é a multiplicação de todos os números primos de 2 até n. Para resolver isso, vamos precisar entender o que são números primos e como podemos identificá-los em Python, além de saber multiplicar esses números para obter o resultado final.

Passo 2

Primeiro, precisamos saber o que é um número primo. Um número primo é aquele que tem exatamente dois divisores distintos: 1 e ele mesmo. Por exemplo, 2, 3, 5, 7 são primos porque não podem ser divididos igualmente por nenhum outro número além de 1 e deles mesmos.

Passo 3

Então, o primeiro passo do nosso código será identificar quais números entre 2 e n são primos. Para isso, vamos criar uma função que verifica se um número é primo. Essa função vai testar se o número pode ser dividido por algum outro número além de 1 e dele mesmo.

Passo 4

Após identificar todos os números primos até n, precisamos multiplicá-los para obter o primorial. Vamos usar uma variável para armazenar o resultado da multiplicação desses números.

Passo 5

Também precisamos tratar casos especiais: se n for 1, o primorial é definido como 1. E para números menores que 1, o primorial é indefinido, então retornaremos None.

Passo 6

Agora, vamos implementar tudo isso em código Python. Vamos criar uma função chamada primorial que recebe um número n e retorna o primorial dele seguindo as regras que discutimos.

Passo 7

Dentro da função, começaremos verificando se n é menor que 1. Se for, retornamos None. Se n for igual a 1, retornamos 1. Caso contrário, identificamos os números primos entre 2 e n e multiplicamos todos eles para obter o primorial.

Passo 8

Para identificar se um número é primo, vamos criar uma função auxiliar chamada eh_primo que retorna True se o número for primo e False caso contrário. Essa função vai testar se o número tem divisores além de 1 e dele mesmo.

Passo 9

Finalmente, usamos a função eh_primo para filtrar os números primos e calcular o produto deles usando um loop ou funções auxiliares como reduce e operator.mul do Python.

Resposta

Aqui está a função Python que calcula o primorial de n conforme solicitado:
def primorial(n):
    if n < 1:
        return None
    elif n == 1:
        return 1
    else:
        def eh_primo(num):
            if num < 2:
                return False
            for i in range(2, int(num ** 0.5) + 1):
                if num % i == 0:
                    return False
            return True
        
        primos = [i for i in range(2, n + 1) if eh_primo(i)]
        resultado = 1
        for primo in primos:
            resultado *= primo
        return resultado

# Exemplos de uso:
print(primorial(5))  # Saída: 30
print(primorial(6))  # Saída: 30
print(primorial(7))  # Saída: 210
print(primorial(1))  # Saída: 1
print(primorial(0))  # Saída: None
Essa função verifica se n é menor que 1, igual a 1 ou maior, identifica os números primos até n e multiplica todos eles para retornar o primorial correspondente.

Exercícios relacionados