Retour aux défis
Moyen 0 résolus 0 % de réussite

Lister les nombres premiers avec un crible

Trouvez les nombres premiers jusqu'à une limite en marquant les multiples composés.

Retournez tous les nombres premiers de 2 jusqu'à limit. Un nombre premier est un entier strictement supérieur à 1, divisible uniquement par 1 et lui-même. Utilisez le principe du crible : gardez le prochain nombre non marqué et marquez ses multiples supérieurs comme composés. Listez les résultats par ordre croissant.

Implémentez sieve_primes(limit).

Entrée

limit : Le plus grand nombre pouvant être inclus.

Sortie

Retournez les nombres premiers par ordre croissant, ou une liste vide s'il n'en existe aucun.

Contraintes

0 ≤ limit ≤ 100 000. La borne supérieure est incluse. Les tests de sortie vérifient les résultats, pas l'algorithme exact utilisé.

Exemples

Exemple 1
Entrée :
limit = 12

Sortie attendue :
expected = [2, 3, 5, 7, 11]
Entrée :
long long limit = 12;

Sortie attendue :
std::vector<long long> expected = {2, 3, 5, 7, 11};
Entrée :
long limit = 12;

Sortie attendue :
long[] expected = new long[] {2, 3, 5, 7, 11};

Explication

Marquez les multiples de 2 et 3 comme composés. Les valeurs restantes jusqu'à 12 sont 2, 3, 5, 7 et 11.

Exemple 2
Entrée :
limit = 1

Sortie attendue :
expected = []
Entrée :
long long limit = 1;

Sortie attendue :
std::vector<long long> expected = {};
Entrée :
long limit = 1;

Sortie attendue :
long[] expected = new long[] {};

Explication

Les nombres premiers commencent à 2, au-delà de cette limite.

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.