NSI , 2021_2022, TP_1

Dans un épisode de la série policière « Unité 42 », on peut voir l’affirmation ci-dessus.

« 421421421, c’est un nombre premier en binaire ».

Que pouvons-nous penser de cette affirmation ?

Question 1 :

Chercher la définition d’un nombre binaire. Que peut-on en déduire ?

Question 2 : un peu de maths

Montrer que 421421421 se factorise « facilement » en produit de 2 nombres entiers.

Question 3 : premier programme, première fonction

Ecrire une fonction python est_premier(nombre) permettant de déterminer si un nombre entier est un nombre premier ou pas.
Si le nombre est premier, la fonction renverra l’indicateur booléen True , et False si le nombre n’est pas premier.

Ressources éventuelles :

On peut lire avec un esprit critique les pages suivantes qui sont les premières proposées par un moteur de recherche :

https://zestedesavoir.com/forums/sujet/10955/python-programme-qui-verifie-si-un-nombre-est-premier/

https://www.quennec.fr/trucs-astuces/langages/python/python-calculer-les-nombres-premiers

Proposition de correction :

from math import sqrt
def est_premier(nombre):
    '''
    nombre : int
    retourne True si le nombre est premier
    retourne False si le nombre n'est pas premier
    '''
    
    if nombre%2==0 :#si le nombre est pair
        return False
    # on commence à tester les diviseurs à partir de 3
    diviseur_possible=3
    # tant que le diviseur est inférieur à la racine carrée et qu'il ne s'agit pas d'un diviseur de nombre
    while diviseur_possible<sqrt(nombre) and nombre%diviseur_possible!=0:
        diviseur_possible+=2 # on avance de 2 en 2 pour éviter les diviseurs pairs
    if diviseur_possible>sqrt(nombre):
        return True
    else:
        return False