# 2nde - Chapitre 17 : scripts python # Version 1, avec une boucle for def div(n): for i in range(1, n+1, 1): if n % i == 0: print(i, "est un diviseur de", n) # Version 2, avec une boucle while ▼ def div(n): i = n while i>0: # On va tester toutes les div de n par i, i allant de n à 1. if n % i == 0: # Si la division "tombe juste" et qu'il n'y a pas de reste print(i, "est un diviseur de", n) i = i - 1 # On décrémente pour tester un autre diviseur # Version 3, avec une boucle while ▲ def div(n): print("Liste des diviseur de ", n) i = 1 while i <= n: if n % i == 0: print(i, end=", ") # une optimisation d’affichage i = i + 1 def isprime(n): prime = True # On suppose le nombre premier i = n - 1 # Le premier diviseur testé sera n-1 while i > 1: if n % i == 0: # Si la division "tombe juste" print(n, "n'est pas un nombre premier") prime = False # On déclare que le nombre n’est pas p. break # On sort de la boucle while (optimisation) # Cela permet aussi de n’afficher qu’1 fois le texte i = i - 1 # On va tester le suivant if prime: # Si prime=True, le nombre est bien premier print(n, "est un nombre premier") def prime(n): prime = True for i in range(2, n, 1): if n % i == 0: prime = False break if prime: print(n, "est un nombre premier") def findprime(a, b): for n in range(a, b + 1): prime(n) # Maths expertes - Chapitre 5 : PGCD et applications # Version 1, classique et sans astuce def pgcd(a , b): if a < b : k = a a = b b = k while a % b != 0: r = a % b a = b b = r return b # Version 2, on exploite les possibilités de python def pgcd(a , b): a, b = max(a, b), min(a, b) while a % b != 0: a, b = b, a % b return b # Version 3, on gère les entiers relatifs et les erreurs def pgcd(a , b): a, b = max(abs(a), abs(b)), min(abs(a), abs(b)) if a != int(a) or b != int(b): return "Il faut saisir des entiers" if a == 0 or b == 0: # Le cas (0,0) n'est pas géré. return max(a,b) while a % b != 0: a, b = b, a % b return b