retour vers le sommaire du cours
Prenez un entier supérieur ou égal à 3. Êtes-vous capable de trouver la décomposition de ce nombre en une somme de termes consécutifs ?
Exemples : 5 = 2 + 3 30 = 6 + 7 + 8 + 9Cela ne fonctionne pas avec tous les entiers !
Rédiger l'algorithme Decomposer sous forme d'une procédure :
procédure decomposer (entrée : Nombre est entier
sortie : NbDebut, NbFin sont entier)où (l'exemple est donné pour la décomposition de 30) :Nombre représente l'entier à décomposer (par exemple 30)
NbDébut représente le plus petit entier de la somme (par exemple 6)
NbFin représente le plus grand entier de la somme (par exemple 9)Si la décomposition est impossible, NbDebut et NbFin contiendront 0
procedure decomposer (entrée : Nombre est entier
sortie : NbDebut, NbFin sont entiers)donnée : Somme est un entier
début
NbDebut <-- 0repeter
NbDebut <-- NbDebut + 1NbFin <-- NbDebut
Somme <-- NbDebutrepeter
NbFin <-- NbFin + 1
Somme <-- Somme + NbFin
jusqu'à ((Somme >= Nombre) ou (NbFin = ((Nombre + 1) div 2)))
jusqu'a ((Somme = Nombre) ou (NbDebut = (Nombre div 2)))si (Somme <> Nombre) alors
NbDebut <-- 0
NbFin <-- 0
fin si
fin