Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

enigme

Posté par
mariebitqo
11-03-18 à 22:10

bonjour,
j'ai rencontré un petit probleme à mon dm , pour exercice suivant

4  nombres de 3 chiffres sont consécutifs et chacun d'eux est divisible par la somme de ses chiffres
quel est le plus petit nombre ces nombre ?
je n'ai jamais etais tres bonne en enigme et je ne vois pas comment la resoudre
merci encore pour aide precieuse

Posté par
patrice rabiller
re : enigme 12-03-18 à 06:45

Bonjour,

Il n'existe qu'une solution.
J'ai simplement écrit un programme sur ma calculatrice en faisant varier un entier N de 100 à 995 puis en additionnant les restes des 4 divisions de N, N+1, N+2, N+3 par les sommes de leurs chiffres. Lorsque cette somme est nulle, cela veut dire que les 4 divisions tombent juste (restes nuls) et mon programme affiche N.  Le programme a été bouclé en une minute à peu près.
Mais il y a peut-être une méthode plus maline sans faire de programme pour trouver le même résultat

Posté par
lake
re : enigme 12-03-18 à 16:02

Bonjour,

Oui, une solution. Je ne suis pas sur qu'il existe une méthode "maline".

On peut faire une recherche sur les nombres Harshad ou de Niven.

Un problème posé aux olympiades académiques:

Posté par
littleguy
re : enigme 12-03-18 à 17:06

Bonjour,

Presque 11 ans déjà !
DEFI 148 : Quatre a la suite.

Posté par
littleguy
re : enigme 12-03-18 à 17:19

Oui, je sais on ne devrait pas donner le résultat, mais comme ça n'est évident pour personne...

Posté par
patrice rabiller
re : enigme 12-03-18 à 17:36

Je ne connaissais pas ce défi. En relisant le fil de discussion sur ce défi 148, je remarque que personne n'a donné de méthode directe sans calculatrice ... J'aimerais bien savoir si on peut trouver cette réponse par un raisonnement algébrique.

Posté par
lake
re : enigme 12-03-18 à 19:18

Bonsoir littleguy,

Tu as mon absolution!

Et si en plus tu postes une grille ...

Posté par
littleguy
re : enigme 13-03-18 à 18:43

> lake

Pas très inspiré actuellement !

Posté par
flight
re : enigme 13-03-18 à 19:52

..salut

ce serait interessant à programmer ..sous excel ca donne 510 .

For i = 100 To 998
z = 0
p = 0
q = 0
w = 0
   For s = 1 To Len(i)
   z = z + Val(Mid(i, s, 1))
   Next
   For x = 1 To Len(i + 1)
    p = p + Val(Mid(i + 1, x, 1))
   Next
   For y = 1 To Len(i + 2)
    q = q + Val(Mid(i + 2, y, 1))
   Next
   For u = 1 To Len(i + 3)
    w = w + Val(Mid(i + 3, u, 1))
   Next
  
   If (i Mod Val(z) = 0) And ((i + 1) Mod Val(p) = 0) And ((i + 2) Mod Val(q) = 0) And ((i + 3) Mod Val(w) = 0) Then
       MsgBox i  '---> retourne 510
      
   End If
Next

End Sub

Posté par
mathafou Moderateur
re : enigme 13-03-18 à 20:02

Bonjour,
ce joyeux mélange de variables considérés à la fois comme un nombre et comme une chaine de caractères est du pur Excel
no comment

Posté par
flight
re : enigme 13-03-18 à 20:25

...des fois je code avec les pieds mais ca marche  bien

Posté par
alb12
re : enigme 13-03-18 à 20:30

il est toujours bon de montrer l'exemple à ne pas suivre

Posté par
carpediem
re : enigme 13-03-18 à 20:38

Posté par
flight
re : enigme 13-03-18 à 21:42

vous rigolez tous  mais mon bout de code me retourne la bonne réponse

Posté par
carpediem
re : enigme 13-03-18 à 21:46

bien sur ...

mais le but n'est pas le but, c'est le chemin qui compte ...

Posté par
bbomaths
re : enigme 14-03-18 à 10:21

Bonjour.

Juste pour le plaisir, le code en Python 2.7 :


#*******************************************************************************
# IMPORT ***********************************************************************
#*******************************************************************************

# module pour le système d'exploitation
import os

# module specifique pour le systeme
import sys

#*******************************************************************************
# DEF **************************************************************************
#*******************************************************************************

# -- afficher ------------------------------------------------------------------
#
# Description  : affichages des listes
#
# Parameters   : - arg_N ~ nombres
#                - arg_S ~ sommes
#                - arg_H ~ status harshad
#
# Return       :
#
# Notes        :
#

def afficher(arg_N, arg_S, arg_H) :

   ligne_N = " N : "
   ligne_S = " S : "
   ligne_H = " H : "

   for i in range(len(arg_N)) :

      ligne_N += "% 6d " % arg_N[i]

      ligne_S += "% 6d " % arg_S[i]

      ligne_H += "% 6s " % arg_H[i]

   print ligne_N
   print ligne_S
   print ligne_H
   print " "

# -- tester_harshad ------------------------------------------------------------
#
# Description  : teste si le nombre est un nombre de Harshad
#
# Parameters   : - arg_N ~ nombre
#
# Return       : - somme des chiffres
#
#                - status_harshad ~ False : n'est pas un nombre de Harshad
#                                   True  : est un nombre de Harshad
#
# Notes        :
#
def tester_harshad(arg_N) :

   # somme des chiffres, nulle par defaut
   somme_chiffres = 0

   # le nombre n'est pas un nombre de Harshad par defaut
   status_harshad = False

   # calcul de la somme des chiffres
   somme_chiffres = sum([int(item) for item in list(str(arg_N))])

   # nombre de Harshad ?
   if arg_N  % somme_chiffres == 0 :

      # oui
      status_harshad = True

   # donnee(s) retournee(s)
   return somme_chiffres, status_harshad

#*******************************************************************************
# MAIN *************************************************************************
#*******************************************************************************

# effacement de l'ecran (facultatif)
os.system('cls')
print " "

# liste de 4 nombres consecutifs
l_N = [99, 100, 101, 102]

# liste des sommes des nombres consecutifs
l_somme = [0] * 4

# liste de status
#
l_harshad = [False] * 4

# affichage des listes pour verification
afficher(l_N, l_somme, l_harshad)

# initialisation
for i in range(len(l_N)) :

   l_somme[i], l_harshad[i] = tester_harshad(l_N[i])

# affichage des listes pour verification
afficher(l_N, l_somme, l_harshad)

while l_N[0] < 1000 - 4 :

   # decalage de la liste de 4 nombres consecutifs
   l_N.pop(0)

   # decalage de la liste de 4 sommes des nombres consecutifs
   l_somme.pop(0)

   # decalage de la liste de 4 status harshad des nombres consecutifs
   l_harshad.pop(0)

   # ajout du quatrieme nombre
   l_N.append(l_N[0] + 3)

   # calcul de la somme des chiffes et son status harshad
   somme, status = tester_harshad(l_N[-1])

   # ajout de la quatrieme somme
   l_somme.append(somme)

   # ajout du quatrieme status
   l_harshad.append(status)

   # affichage des listes pour verifiation
   afficher(l_N, l_somme, l_harshad)

   # chaine de 4 nombres de Harshad successifs ?
   if l_harshad.count(True) == len(l_harshad) :

      # oui : arret de la recherche
      break

# affichage des listes
afficher(l_N, l_somme, l_harshad)


En fin d'exécution :

 N :    510    511    512    513
 S :      6      7      8      9
 H :   True   True   True   True

Posté par
patrice rabiller
re : enigme 14-03-18 à 11:41

Je ne résiste pas moi non plus à proposer un programme pour calculatrice TI83 CE. Le programme fait appel à une fonction (Y1 en l'occurrence) qui donne le reste de la division d'un nombre par la somme de ses chiffres.
Ci-dessous, j'ai fait une copie d'écran de la fonction Y1 et du programme.
C'est quand même beaucoup plus court que tout ce qu'on peut écrire en "langage évolué" non ?

enigme

Posté par
alb12
re : enigme 14-03-18 à 15:48

salut, le mot de la fin avec Pythagore:
Ne dis pas peu de choses en beaucoup de mots, mais dis beaucoup de choses en peu de mots.

Posté par
bbomaths
re : enigme 14-03-18 à 16:22


Sois plutôt la boussole que le pilote.
(Pythagore, "Les Lois").

Posté par
alb12
re : enigme 14-03-18 à 16:55

soit mais on a rarement vu une boussole gagner les 24 heures du Mans.

Posté par
bbomaths
re : enigme 14-03-18 à 17:05

Pythagore parlait de navigateurs...

Posté par
alb12
re : enigme 14-03-18 à 17:59

je rectifie donc mon script
soit mais on a rarement vu une boussole remonter une daurade
Forcement c'est moins drole.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !