Como gerar 200.000 primos o mais rápido possível em Python?
Para gerar uma grande quantidade de números primos o mais rápido possível em Python, uma opção eficiente é usar o “Crivo de Eratóstenes”, que é um algoritmo clássico para encontrar todos os números primos até um determinado valor.
Aqui está um exemplo de implementação do Crivo de Eratóstenes em Python:
def gerar_primos(n):
is_primo = [True] * (n+1)
is_primo[0] = is_primo[1] = False
for p in range(2, int(n**0.5) + 1):
if is_primo[p]:
for i in range(p*p, n+1, p):
is_primo[i] = False
primos = []
for p in range(2, n+1):
if is_primo[p]:
primos.append(p)
return primos
qtd_primos = 200000
primos = gerar_primos(qtd_primos)
print(primos)Nesse exemplo, a função gerar_primos recebe um número n como parâmetro e retorna uma lista com todos os números primos até n. O algoritmo usa uma lista booleana is_primo, onde o valor True indica que um número é primo e o valor False indica que ele não é primo.
Primeiramente, todos os valores da lista is_primo são inicializados como True, exceto os índices 0 e 1, que são definidos como False. Em seguida, o algoritmo percorre todos os números de 2 até a raiz quadrada de n (arredondada para cima), e para cada número p primo encontrado, marca todos os múltiplos de p como não primos.
Por fim, os números primos restantes são adicionados à lista primos e retornados pela função.
No exemplo, a variável qtd_primos define a quantidade de números primos que serão gerados (nesse caso, 200000). Esses primos são armazenados na variável primos e são impressos na tela.
É importante mencionar que esse algoritmo é muito eficiente para a geração de uma grande quantidade de números primos. No entanto, a velocidade de execução pode variar dependendo do hardware do computador e da versão do Python utilizada.