Premier multiple au dessus d’un seuil avec Python

Le problème

A l’aide d’un algorithme, trouver le premier multiple d’un entier (disons 37), supérieur à un seuil donné (disons 1 million).

En fonction des outils disponibles, différentes solutions sont possibles.

En utilisant des additions

C’est la solution proposée par mes élèves qui ont vite voulu calculer les différents multiples de 37.

"""
On cherche a trouver le premier multiple d'un entier n
superieur a un seuil donne.
"""

n=37
seuil=1000000

multiple=0
while (multiple<= seuil):
    multiple=multiple+n

print multiple

En utilisant des produits

Très vite, des élèves ont voulu une solution avec des multiplications et ont proposé cet algorithme qui ne fonctionne pas :

"""
On cherche a trouver le premier multiple d'un entier n
superieur a un seuil donne.
"""

n=37
seuil=1000000

k=1
multiple=n
while (multiple<= seuil):
    k=k+1
    multiple=multiple*k

print multiple

Voici la correction :

"""
On cherche a trouver le premier multiple d'un entier n
superieur a un seuil donne.
"""

n=37
seuil=1000000

k=0
multiple=0
while (multiple<= seuil):
    k=k+1
    multiple=k*n

print multiple

En utilisant la division euclidienne

On peut imaginer des solutions avec des boucles mais c’est inutile :

"""
On cherche a trouver le premier multiple d'un entier n
superieur a un seuil donne.
"""

n=37
seuil=1000000


k=seuil/n+1
multiple=k*n


print multiple

En utilisant le reste de la division euclidienne

"""
On cherche a trouver le premier multiple d'un entier n
superieur a un seuil donne.
"""

n=37
seuil=1000000


k=seuil/n+1
multiple=seuil+n-seuil%n


print multiple