5.6. Exercices¶
5.6.1. Multiple de¶
Écrivez une fonction qui détermine si un entier passé en paramètre est multiple d’un autre entier, également passé en paramètre.
Solution
def multiple(number, divisor):
return number % divisor == 0
5.6.2. Équation du second degré¶
Écrivez une fonction qui calcule les solutions, si elles existent, de l’équation \(ax^2+bx+c=0\). La fonction recevra les valeurs de \(a\), \(b\) et \(c\) en paramètre et renverra les solutions dans une liste.
Utilisez cette fonction pout trouver et afficher les solutions de l’équation \(x^2+3x+2=0\).
Solution
def polynomial(a, b, c):
n = (b**2 - 4*a*c)
if n < 0: # pas de solution
return []
elif n == 0: # une seule solution
sol = -b / (2*a)
return [sol]
else: # deux solutions
sol1 = (-b - n**0.5) / (2*a)
sol2 = (-b + n**0.5) / (2*a)
return [sol1, sol2]
print(polynomial(1, 3, 2))
5.6.3. Tables de multiplication (à l’aide de fonctions)¶
Écrivez une fonction qui affiche une table de multiplication pour une base et une valeur limite passés en paramètre. Utilisez cette fonction pour afficher les tables de multiplication de 1 jusqu’à 12.
Solution
def table(base, limit):
print("Table de multiplication de " + str(base))
for i in range(1, limit + 1):
print(str(i) + " * "
+ str(base) + " = "
+ str(i * base))
for base in range(1, 13):
table(base, 12)
5.6.4. PGCD¶
La fonction pgcd()
calcule le plus grand commun diviseur entre deux entiers positifs.
On peut calculer le PGCD à l’aide de l’algorithme d’Euclide de la manière suivante, avec deux entiers positifs m
et n
tels que m
> n
≥ 0 :
si
n
est nul, alors l’algorithme termine et rend la valeurm
;sinon, l’algorithme calcule le reste
r
de la division euclidienne dem
parn
(r = m % n
), puis recommence avecm
=n
etn
=r
.
Écrivez la fonction pgcd()
.
Solution
def pgcd(m, n):
while n != 0:
r = m % n # reste de la division euclidienne
m = n
n = r # on peut écrire ces 3 lignes en une seule, essayez...
return m # on a trouvé la solution !
5.6.5. PGCD récursif¶
La fonction pgcd()
calcule le plus grand commun diviseur entre deux entiers positifs.
Si on l’écrit souvent de manière itérative avec une boucle, on peut aussi l’exprimer sous forme récursive.
En effet, pour m
et n
deux entiers positifs, on a pgcd(m, n) = pgcd(n, m % n)
.
On notera aussi que, si m
est divisible par n
, alors le PGCD est n
.
Écrivez la fonction pgcd()
de manière récursive.
On fera l’hypothèse que, lors de l’appel initial à la fonction, m
et n
sont positifs.
Solution
def pgcd(m, n):
if n == 0: # condition d'arrêt
return m # on a trouvé la solution !
return pgcd(n, m % n) # appel récursif