Exercice 99
Écrire un algorithme en Python sous forme de fonction semi_premier(n) qui prend en entrée un entier positif n et retourne True si n est semi-premier (c.a.d produit de deux nombres premiers) (éventuellement égaux), False sinon.
Solution
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
def est_premier(n): #Retourne True si n est premier, False sinon. if n < 2: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True def semi_premier(n): #Retourne True si n est le produit de deux nombres premiers. if n < 4: # 2*2=4 est le plus petit semi-premier return False for i in range(2, int(n**0.5) + 1): if n % i == 0: # i est un diviseur, on vérifie que i et n//i sont premiers return est_premier(i) and est_premier(n // i) return False # Aucun diviseur trouvé, n est premier donc pas semi-premier # Exemple n = 26 # n = 2x13 m = 30 # m = 2x3x5 print(semi_premier(n)) # output : True print(semi_premier(m)) # output : False |
Younes Derfoufi
CRMEF OUJDA



