Accueil

Orientation générale

Barre de recherche

DicoNombre

DicoMot Math

DicoCulture

Atlas des maths

Rubriques

Index alphabétique

Nouveautés

Actualités

Références

Édition du: 12/08/2025

M'écrire

Brèves de Maths

 

INDEX

 

Défis arithmétiques

Jeux et énigmes

 

Défis arithmétiques

123456

Croix

Mul. 5 x 5

2020/2021

9 chiffres

15 chiffres

26 chiffres

LCS 35

Somme S et divisible par k

Faites un double-clic pour un retour en haut de page

 

 

Défi: nombre divisible par k

Somme des chiffres S

 

Trouver les nombres sous contrainte de divisibilité et de somme des chiffres. On ajoute que les nombres sont à trois chiffres distincts. Exemple avec divisibilité par k = 3 et somme S = 18

         

 

Sommaire de cette page

>>> Somme des chiffres:   S = 18

>>> Programmation – Trois possibilités

>>> Nombres primaires avec S =18

>>> Liste des nombres primaires

>>> Sommes – Programmation Python

 

Débutants

Nombres

 

Glossaire

Nombres

 

 

Somme des chiffres:   S = 18

haut

 

Défi

Ce défi est posé sur Internet, Facebook, etc.

Il est amusant et accessible à  des élèves de primaire.

 

Il demande de trouver tous les nombres divisibles par 3, à trois chiffres distincts de somme 18.

 

 

Remarque

Cependant, sa définition est redondante: un nombre dont la somme des nombres est 18 est toujours divisible par 3, car la somme est elle-même divisible par 3.

 

Liste des nombres de 1 à 1000 avec S = 18

Il y en a 55

 

99, 189, 198, 279, 288, 297, 369, 378, 387, 396, 459, 468, 477, 486, 495, 549, 558, 567, 576, 585, 594, 639, 648, 657, 666, 675, 684, 693, 729, 738, 747, 756, 765, 774, 783, 792, 819, 828, 837, 846, 855, 864, 873, 882, 891, 909, 918, 927, 936, 945, 954, 963, 972, 981, 990.

  

 

 

Programmation – Trois possibilités

haut

 

Programme avec ensemble

S = set()

for n in range(1, 1000):

    sc = sum(int(d) for d in str(n))

    if sc == 18:

        S.add(n)

print(len(S),sorted(S))

Commentaires

Déclaration d'un ensemble S.

Dans la boucle calcul de la somme des chiffres en passant par un épluchage de la chaine de caractère (str).

Si la somme vaut 18, le nombre n est ajouté à l'ensemble (add).

On imprime la liste après l'avoir triée (sorted).

 

Programme avec liste

L = []

for n in range(100, 1000):

    if sum(int(d) for d \

               in str(n)) == 18:

        L.append(n)

print(len(L),sorted(set(L)))

Commentaires

Déclaration d'une liste L.

Ajouter un élément à une liste de fait avec append (et non plus add).

 

Programme avec liste triée tout le long du traitement

from bisect import insort

 

L = []

for n in range(100, 1000):

    if sum(int(d) for d \

                in str(n)) == 18:

        insort(L, n)   

print(L)

Commentaires

L'instruction  insort insère l'élément à la bonne position pour que la liste reste triée tout le log du calcul.

Voir ProgrammationIndex  / Programmes PythonIndex 

 

 

Nombres primaires avec S =18

haut

 

But

Reprendre la liste des nombres dont la somme des chiffres est 18 en ne conservant qu'un seul représentant des nombres identiques par permutations de chiffres.

On élimine tous les nombres comportant un zéro, car ceux-ci peuvent être ajoutés ad infinitum.

 

 

On ne conserve que le "primaire" 189 pour représenter les nombres:
189, 198, 819, 891, 918, 881

 

Le nombre 99 étant retenu, les nombre 990 ou 909 seront éliminés.

 

Liste des nombres primaires de 1 à 1000 avec S = 18

Il y en a 12 dont 7 à chiffres distincts

 

Complète

99, 189, 279, 288, 369, 378, 459, 468, 477, 558, 567, 666.

 

Avec chiffres distincts

189, 279, 369, 378, 459, 468, 567.

 

 

Liste pour 1 à 20 000

Il y en a 71

 

 

99, 189, 279, 288, 369, 378, 459, 468, 477, 558, 567, 666, 1179, 1188, 1269, 1278, 1359, 1368, 1377, 1449, 1458, 1467, 1557, 1566, 2259, 2268, 2277, 2349, 2358, 2367, 2448, 2457, 2466, 2556, 3339, 3348, 3357, 3366, 3447, 3456, 3555, 4446, 4455, 11169, 11178, 11259, 11268, 11277, 11349, 11358, 11367, 11448, 11457, 11466, 11556, 12249, 12258, 12267, 12339, 12348, 12357, 12366, 12447, 12456, 12555, 13338, 13347, 13356, 13446, 13455, 14445.

 

 

TOUS

Il y en a 21 nombres primaires à chiffres distincts dont la somme est 18 (zéro exclu)

 

189, 279, 369, 378, 459, 468, 567, 1269, 1278, 1359, 1368, 1458, 1467, 2349, 2358, 2367, 2457, 3456, 12348, 12357, 12456

 

Liste des nombres primaires à chiffres distincts dont la somme est 1 à 35 (max)

1 1 [1]      Somme S   Quantité de nombres    Liste des nombres

2 1 [2]

3 2 [3, 12]

4 2 [4, 13]

5 3 [5, 14, 23]

6 4 [6, 15, 24, 123]

7 5 [7, 16, 25, 34, 124]

8 6 [8, 17, 26, 35, 125, 134]

9 8 [9, 18, 27, 36, 45, 126, 135, 234]

10 9 [19, 28, 37, 46, 127, 136, 145, 235, 1234]

11 10 [29, 38, 47, 56, 128, 137, 146, 236, 245, 1235]

12 12 [39, 48, 57, 129, 138, 147, 156, 237, 246, 345, 1236, 1245]

13 13 [49, 58, 67, 139, 148, 157, 238, 247, 256, 346, 1237, 1246, 1345]

14 15 [59, 68, 149, 158, 167, 239, 248, 257, 347, 356, 1238, 1247, 1256, 1346, 2345]

15 17 [69, 78, 159, 168, 249, 258, 267, 348, 357, 456, 1239, 1248, 1257, 1347, 1356, 2346, 12345]

16 18 [79, 169, 178, 259, 268, 349, 358, 367, 457, 1249, 1258, 1267, 1348, 1357, 1456, 2347, 2356, 12346]

17 19 [89, 179, 269, 278, 359, 368, 458, 467, 1259, 1268, 1349, 1358, 1367, 1457, 2348, 2357, 2456, 12347, 12356]

18 21 [189, 279, 369, 378, 459, 468, 567, 1269, 1278, 1359, 1368, 1458, 1467, 2349, 2358, 2367, 2457, 3456, 12348, 12357, 12456]

19 21 [289, 379, 469, 478, 568, 1279, 1369, 1378, 1459, 1468, 1567, 2359, 2368, 2458, 2467, 3457, 12349, 12358, 12367, 12457, 13456]

20 22 [389, 479, 569, 578, 1289, 1379, 1469, 1478, 1568, 2369, 2378, 2459, 2468, 2567, 3458, 3467, 12359, 12368, 12458, 12467, 13457, 23456]

21 22 [489, 579, 678, 1389, 1479, 1569, 1578, 2379, 2469, 2478, 2568, 3459, 3468, 3567, 12369, 12378, 12459, 12468, 12567, 13458, 13467, 23457]

22 22 [589, 679, 1489, 1579, 1678, 2389, 2479, 2569, 2578, 3469, 3478, 3568, 4567, 12379, 12469, 12478, 12568, 13459, 13468, 13567, 23458, 23467]

23 21 [689, 1589, 1679, 2489, 2579, 2678, 3479, 3569, 3578, 4568, 12389, 12479, 12569, 12578, 13469, 13478, 13568, 14567, 23459, 23468, 23567]

24 20 [789, 1689, 2589, 2679, 3489, 3579, 3678, 4569, 4578, 12489, 12579, 12678, 13479, 13569, 13578, 14568, 23469, 23478, 23568, 24567]

25 18 [1789, 2689, 3589, 3679, 4579, 4678, 12589, 12679, 13489, 13579, 13678, 14569, 14578, 23479, 23569, 23578, 24568, 34567]

26 16 [2789, 3689, 4589, 4679, 5678, 12689, 13589, 13679, 14579, 14678, 23489, 23579, 23678, 24569, 24578, 34568]

27 14 [3789, 4689, 5679, 12789, 13689, 14589, 14679, 15678, 23589, 23679, 24579, 24678, 34569, 34578]

28 11 [4789, 5689, 13789, 14689, 15679, 23689, 24589, 24679, 25678, 34579, 34678]

29 9 [5789, 14789, 15689, 23789, 24689, 25679, 34589, 34679, 35678]

30 7 [6789, 15789, 24789, 25689, 34689, 35679, 45678]

31 5 [16789, 25789, 34789, 35689, 45679]

32 3 [26789, 35789, 45689]

33 2 [36789, 45789]

34 1 [46789]

35 1 [56789]

 

 

Sommes – Programmation Python

haut

 

def VAL(deb: int, fin: int, S: int) -> list[int]:

    valides = []

    for n in range(deb, fin + 1):

        chiffres = str(n)

        if '0' in chiffres:

            continue

        if len(set(chiffres)) != len(chiffres):

            continue

        if sum(int(c) for c in chiffres)== S:

            valides.append(n)

    return valides

 

def PRIM(nombres: list[int]) -> list[int]:

    reps = {}

    for n in nombres:

        signature = tuple(sorted(str(n)))

        if signature not in reps \

               or n < reps[signature]:

            reps[signature] = n

    return sorted(reps.values())

 

# Programme principal

deb = 1; fin = 10000

for S in range (1,35):

    tous = VAL(deb, fin, S)

    uniques = PRIM(tous)

    print(S, len(uniques),uniques)

 

 

 

But

Le programme retourne les nombres de deb à fin tels que:

*      les chiffres sont distincts,

*      un seul représentant des permutations de chiffres,

*      sans le chiffre "0",

*      la somme des chiffres est S.

 

Commentaires

La fonction VAL effectue cette recherche de nombres:

On passe à la suite si le nombre comporte un "0",

Les chiffres sont différents s'il y a la même quantité de chiffres dans la liste et dans l'ensemble.

On ne conserve que le nombre à somme de chiffres S.

 

La fonction PRIM ne conserve que le plus petit représentant du groupe de permutations des chiffres d'un nombre.

 

Le programme principal établit les listes des nombres pour les sommes successives de 1 à 35 (35 étant le maximum).

 

Le résultat est le tableau montré ci-dessus.

 

 

Haut de page (ou double-clic)

 

Retour

*      Défis arithmétiques et algébriques Index

Suite

*      Multiplication 4 x 4 (26 chiffres)

*      Cryptogrammes – Multiplication

Voir

*      PuzzlesIndex

*      Multiplication

*      Problème des 18 points

Cette page

http://villemin.gerard.free.frajeux1/Arithmet/NombCont.htm