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