retour vers le sommaire du cours

Algorithmique - Travaux Dirigés - Séance n°2
Elements de correction

Algorithme 1 - Problème de Maths (énoncé - programme Retour en haut de page

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 + 9

Cela 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 <-- 0

  repeter
    NbDebut <-- NbDebut + 1

    NbFin <-- NbDebut
    Somme <-- NbDebut

    repeter
      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


Page créée en novembre 2003
Auteur : Jean HENRI