Executando verificação de segurança...
1

O Problema dos números primos na programação

Vocês já criaram um programa que retorne uma lista de números primos do tamanho que o usuário desejar?

Matemáticamente falando, há infinitos números primos, e além disso, eles não seguem uma ordem (por enquanto, ainda não provada, como a hipótese de riemann) então

Como vocês fariam um programa eficiente que peça um tamanho da lista de números primos, e retorne a lista somente com os números primos?

Eu já fiz algo assim com Python, porém, ficou um programa extremamente pesado, e quando o número da lista era grande demais, o programa simplesmente travava.

Carregando publicação patrocinada...
2

Eu ainda não sou tão familiarizado com JavaScript, mas eu fiz um código e ficou assim, acho que dá pra entender:

function isPrime(num) {
    for (var i = 2; i < num; i++) {
        if (num % i === 0) {
            return false;
        }
    }
    return true;
}

function printPrimeNumbers(size) {
    var primesList = [];
    var numberToVerify = 2;
    while (primesList.length < size) {
        if (isPrime(numberToVerify)) {
            primesList.push(numberToVerify);
        }
        numberToVerify++;
    }
    console.log(primesList)
}

Provavelmente esse código não está seguindo as boas práticas, mas é funcional (na minha máquina rodou 😅). E é natural que quando o número da lista é grande demais demore, computadores têm limites também.

edit: ué, o TabNews não está mostrando o sinal de < (<), só pra mim que está assim? No preview ele mostra, só não mostra no comentário mesmo.

2

Com base no teu código eu fiz em python:

def is_prime(number):
    for i in range(2, number, 1):
        if number % i  == 0:
            return False
    return True


def print_list_primes(list_len: int):
    result = list()
    for i in range(2, list_len, 1):
        if is_prime(i):
            result.append(i)
        else:
            pass
    print(result)

1

Que massa! Mas assim ele mostra todos os números primos até número que você forneceu, certo? Testei aqui com 50 e ele me retornou os 15 números primos menores que 50.

Então entendi a proposta de forma errada, no código que eu fiz ele mostra os x primeiros números primos, onde x é o número fornecido.