Nom
:……………..…………..……. Prenom :………………………………poste :…..
TP2 :
Noter bien :
Enregistrer votre travail périodiquement dans votre répertoire sous le nom tp2votre nom
Nombres de SMITH : Somme des chiffres égale à la somme des chiffres de ses facteurs
premiers.
Exemple :
sa décomposition en facteurs premier =
4 937 775
3 x 5 x 5 x 65 837
4+9+3+7+7+7+5 = 42 3+5+5+6+5+8+3+7 = 42
Somme chiffres de 202 sa décomposition en facteurs premier=
2 × 101,
2+0+2=4 2+1+0+1=4
Ecrire un code python qui permet d’afficher tous les nombres SMITH d’un vecteur t de n
entiers à 3 chiffres
Liste des nombres SMITH
4, 22, 27, 58, 85, 94, 121, 166, 202, 265, 274, 319, 346, 355, 378, 382, 391, 438, 454, 483, 517,
526, 535, 562, 576, 588, 627, 634, 636, 645, 648, 654, 663, 666, 690, 706, 728, 729…
Nom :……………..…………..……. Prenom :………………………………poste :…..
TP2 :
Noter bien :
Enregistrer votre travail périodiquement dans votre répertoire sous le nom tp2votre nom
Nombres de SMITH : Somme des chiffres égale à la somme des chiffres de ses facteurs
premiers.
Exemple :
sa décomposition en facteurs premier =
4 937 775
3 x 5 x 5 x 65 837
4+9+3+7+7+7+5 = 42 3+5+5+6+5+8+3+7 = 42
Somme chiffres de 202 sa décomposition en facteurs premier=
2 × 101,
2+0+2=4 2+1+0+1=4
Il existe une infinité de nombres de Smith palindromes ; nombre SMITH qui peut nous donner le
même nombre en lisant ce nombre dans les deux sens
Par exemple des nombres de Smith palindromes : 22, 121, 202, 454, 535, 636, 666…
Ecrire un code python qui permet d’afficher tous les nombres SMITH palindromes d’un
vecteur t de n entiers à 3 chiffres
from numpy import*
def som_chiff(x) :
s=0
while x !=0 :
s=s+x%10
x=x//10
return s
def fact_premier (x) :
i=2
s=0
while x!=1 :
while x%i==0 :
s=s+som_chiff(i)
x=x//i
i=i+1
return s
n=int(input('n='))
t=array([int()]*n)
for i in range(n):
t[i]=int(input('t['+str(i)+']='))
while not(100<=t[i]<=999):
t[i]=int(input('t['+str(i)+']='))
for i in range(n):
if fact_premier (t[i])==som_chiff(t[i]):
print(t[i])
************************************************
from numpy import*
def som_chiff(x) :
s=0
while x !=0 :
s=s+x%10
x=x//10
return s
def fact_premier (x) :
i=2
s=0
while x!=1 :
while x%i==0 :
s=s+som_chiff(i)
x=x//i
i=i+1
return sdef palindrome(ch):
c=ch[::-1]
return ch==c
def nb_smith(x):
return fact_premier (x)==som_chiff(x)
n=int(input('n='))
t=array([int()]*n)
for i in range(n):
t[i]=int(input('t['+str(i)+']='))
while not(100<=t[i]<=999):
t[i]=int(input('t['+str(i)+']='))
for i in range(n):
if nb_smith(t[i]) and palindrome(str(t[i])):
print(t[i])