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

Vérification de nombre premier

Déterminez si un nombre est premier.

Ce que vous allez apprendre

  • Tester la divisibilité avec l'opérateur %
  • S'arrêter à la racine carrée de n
  • Traiter 0, 1 et 2 comme des cas particuliers

Problème

Un nombre premier est un entier strictement supérieur à 1 qui n'est divisible que par 1 et lui-même. Il suffit de vérifier les diviseurs jusqu'à la racine carrée de n.

Implémentez is_prime(n).

Entrée

n : Le nombre à tester.

Sortie

Retournez true si n est premier, sinon false.

Contraintes

-1 000 ≤ n ≤ 1 000 000 000 000

Exemples

Exemple 1
Entrée :
n = 29

Sortie attendue :
expected = True
Entrée :
long long n = 29;

Sortie attendue :
bool expected = true;
Entrée :
long n = 29;

Sortie attendue :
bool expected = true;

Explication

29 n'a pas de diviseur autre que 1 et 29.

Exemple 2
Entrée :
n = 21

Sortie attendue :
expected = False
Entrée :
long long n = 21;

Sortie attendue :
bool expected = false;
Entrée :
long n = 21;

Sortie attendue :
bool expected = false;

Explication

21 = 3 × 7, donc ce n'est pas un nombre premier.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Traitez d’abord les nombres inférieurs à 2 ; ils ne peuvent pas être premiers.

Indice 2

Testez les diviseurs possibles seulement jusqu’à la racine carrée du nombre.

Indice 3

Faites attention aux nombres pairs et aux facteurs répétés : un seul diviseur suffit à invalider la primalité.

Complexité attendue

temps O(sqrt(n)), espace supplémentaire O(1)

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.