Dénombrement Exercices

Somme des chiffres et dénombrement

Durée estimée
15 minutes
Difficulté
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Objectif travaillé

  1. Déterminer le nombre d'entiers naturels inférieurs à 1 000 000 dont la somme des chiffres est égale à 4.
  2. Écrire une programme en Python qui liste ces entiers et qui vérifie le résultat de la question 1.

Corrigé

  1. En préfixant un nombre par des zéros ( par exemple 301 = 000301 ), on peut considérer que les entiers naturels inférieurs à 1 000 000 sont les entiers de six chiffres.

    Pour que la somme des chiffres soit égal à 4, on a les possibilités suivantes :

    • 4 chiffres « $ 1 $ » (et 2 chiffres « $ 0 $ ») ce qui donne $ \begin{pmatrix} 6 \\ 4 \end{pmatrix} = 15 $ possibilités ;
    • 2 chiffres « $ 1 $ », 1 chiffre « $ 2 $ » (et 3 chiffres « $ 0 $ ») ce qui donne $ \begin{pmatrix} 6 \\ 2 \end{pmatrix} = 15 $ possibilités pour le chiffre « $ 1 $ » et 4 possibilités pour le chiffre « $ 2 $ » (car il ne reste plus que 4 positions une fois que les 2 chiffres « $ 1 $ » ont été placés), soit au total $ 15 \times 4 = 60 $ possibilités ;
    • 2 chiffres « $ 2 $ » (et 4 chiffres « $ 0 $ ») ce qui donne $ \begin{pmatrix} 6 \\ 2 \end{pmatrix} = 15 $ possibilités ;
    • 1 chiffre « $ 1 $ », 1 chiffre « $ 3 $ » (et 4 chiffres « $ 0 $ ») ce qui donne $ 6 \times 5 = 30 $ possibilités ;
    • 1 chiffre « $ 4 $ » (et 5 chiffres « $ 0 $ ») ce qui donne 6 possibilités .

      Au total, le nombre d'entiers naturels inférieurs à 1 000 000 dont la somme des chiffres est égale à 4 est ;

      $ 15 + 60 + 15 + 30 + 6= 126. $

      Remarque  : On peut retrouver ce résultat en utilisant l'exercice Combinaisons avec répétition ; on est en effet amené à chercher les solutions entières et positives de l'équation $ x+y+z+t+u+v = 4 $ qui d'après cet exercice est : $ \begin{pmatrix} 9 \\ 4 \end{pmatrix} = 126. $

  2. Voici un exemple de programme Python assez simple qui répond au problème en bouclant sur les six chiffres :

    compteur = 0
    for i_1 in range(0,5) :
        for i_2 in range(0,5) :
            for i_3 in range(0,5) :
                for i_4 in range(0,5) :
                    for i_5 in range(0,5) :
                        for i_6 in range(0,5) :
                            if ( i_1 + i_2 + i_3 + i_4 + i_5 + i_6 == 4) :
                                compteur = compteur + 1
    print('total : ', compteur)

    Aucun chiffre ne pouvant être strictement supérieur à 4, on a limité les boucles à un range(0, 5) pour optimiser le programme (il est possible d'optimiser davantage mais on obtient alors un programme plus complexe).