Somme des chiffres et dénombrement
Déterminer le nombre d'entiers naturels inférieurs à 1 000 000 dont la somme des chiffres est égale à 4.
Écrire une programme en Python qui liste ces entiers et qui vérifie le résultat de la question 1.
Corrigé
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 « » (et 2 chiffres « ») ce qui donne possibilités ;
2 chiffres « », 1 chiffre « » (et 3 chiffres « ») ce qui donne possibilités pour le chiffre « » et 4 possibilités pour le chiffre « » (car il ne reste plus que 4 positions une fois que les 2 chiffres « » ont été placés), soit au total possibilités ;
2 chiffres « » (et 4 chiffres « ») ce qui donne possibilités ;
1 chiffre « », 1 chiffre « » (et 4 chiffres « ») ce qui donne possibilités ;
1 chiffre « » (et 5 chiffres « ») 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 ;
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 qui d'après cet exercice est :
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).