Déterminer le plus grand multiple d’un nombre inférieur à un autre en Python

Afin de déterminer le plus grand multiple d’un nombre inférieur à un autre en Python, il faut savoir comment vérifier si deux nombres sont bel et bien multiples. Il faut aussi avoir une idée de la façon dont on peut s’y prendre du point de vue algorithmique.

plus grand multiple inférieur à un autre en Python

Approche mathématique pour déterminer le plus grand multiple d’un nombre inférieur à un autre en Python

Un nombre n est multiple d’un nombre a quand le reste de la division de n par a vaut 0. En Python, cela s’écrit :

n % a == 0

Ainsi, pour déterminer le plus grand multiple d’un nombre a inférieur à un autre nombre b, on peut partir de a + 1 et parcourir tous les nombres entiers jusqu’à b en testant s’ils divisent a.

Déterminer le plus grand multiple d’un nombre inférieur à un autre : programmes Python

Par balayage

def multiple(a,b):
    m = 0
    n = a + 1
    while n < b:
        if n % a == 0:
            m = n
        n = n + 1
        
    return m

Cette fonction retourne le plus grand multiple du nombre a plus petit que b. Par exemple,

>>> multiple(13,100)
91

Cela signifie que le plus grand multiple de 13 inférieur à 100 est 91.

L’idée ici est donc de balayer tous les nombres entiers à partir de a + 1 jusqu’à b, nombres que l’on va stocker dans la variable n, et pour chacun d’eux, de tester s’ils sont multiples de a (→ ligne 5). Si tel est le cas, on affecte à la variable m la valeur du nombre n (→ ligne 6).

Cette méthode est certes efficace (elle fonctionne quoi !) mais lente car si b est extrêmement grand, cela risque de prendre du temps pour y arriver.

Autre méthode

Une autre méthode permettant de déterminer le plus grand multiple d’un nombre inférieur à un autre en Python consiste à simplement multiplier a par 2, 3, 4, … jusqu’à atteindre b.

def multiple_bis(a,b):
    k = 1
    while a * k < b:
        k = k + 1
        
    return a * (k-1)

Dans cette dernière fonction, k joue le rôle d’un coefficient multiplié à a. Tant que ka < b, on ajoute 1 à k; on sort donc de la boucle while quand kab.

C’est pour cela que l’on retourne (k – 1)a (pour que le multiple retourné soit inférieur à b).

Cette dernière fonction est bien plus efficace que la première car il y a bien moins de nombres à analyser.

N’oubliez pas que si vous rencontrez des difficultés en mathématiques, je peux vous aider par webcam !

[Retour à la page des ressources Python]