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