Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

En passant par 89 et 145

Posté par
alainpaul
23-03-12 à 19:50

Bonjour,


Un récent problème,une énigme,
s'intéressait aux chaines formées à partir
de nombres à 3 chiffres:
315 => 3^2+1^2+5^2 = 35
 \\ 35  => 3^2+5^2 = 34
 \\ ...
La condition d'arrêt :reste un nombre à un seul chiffre.
En partant de 315 ,nous obtenons:
315,35,34,25,29,85,89,145,42,20,4

Peut-on trouver un entier n ,telle que toute chaîne
de longueur > n  passe par 89 et 145 .


Alain

Posté par
Bachstelze
re : En passant par 89 et 145 24-03-12 à 01:09

Bonjour

Non.

Chaîne de longueur 1 : 1
Chaîne de longueur 2 : 10 -> 1
Longueur 3 : 1 111 111 111 -> 10 -> 1
Longueur 4 : 1 111 111 111 de fois le chiffre 1 -> 1 111 111 111 -> 10 -> 1
Longueur 5 : (1 111 111 111 de fois le chiffre 1) de fois le chiffre 1 -> 1 111 111 111 de fois le chiffre 1 -> 1 111 111 111 -> 10 -> 1

...

Posté par
Bachstelze
re : En passant par 89 et 145 24-03-12 à 01:10

Pardon, mal lu, il faut forcément partir de nombres à 3 chiffres. Facile à résoudre par le calcul, alors...

Posté par
Bachstelze
re : En passant par 89 et 145 24-03-12 à 01:32

n = 7

Citation :
firas@av104151 ~ % cat foo.py
l = []
for i in range(1000):
    l.append([i])
    n = 0
    while len(str(l[i][n])) > 1:
        l[i].append(0)
        k = l[i][n]
        while k > 0:
            l[i][n+1] += (k%10)**2
            k //= 10
        n += 1
l = [i for i in l if len(str(i[0])) == 3]
minlen = min([len(i) for i in l])
maxlen = max([len(i) for i in l])
for i in range(minlen, maxlen+1):
    l2 = [j for j in l if len(j) == i]
    if l2 == [j for j in l2 if 89 in j and 145 in j]:
        print("%s ok" % i)
    else:
        print("%s not ok" % i)

firas@av104151 ~ % python3 foo.py
2 not ok
3 not ok
4 not ok
5 not ok
6 not ok
7 not ok
8 ok
9 ok
10 ok
11 ok
12 ok
13 ok
14 ok
15 ok
16 ok

Posté par
alainpaul
re : En passant par 89 et 145 24-03-12 à 10:53

Bonjour,


Merci pour ta réponse et ton programme
clairs.


Les-dits points de passage 89,145 devraient
se retrouver aussi si nous partions de nombres plus
élevés,


Amicalement,


Alain

Posté par
Bachstelze
re : En passant par 89 et 145 24-03-12 à 13:39

Si on donne un maximum pour le nombre de départ, c'est fort possible, mais sinon, il est toujours possible de construire une chaîne de longueur arbitraire avec que des 1 (mais le nombre de départ sera astronomique par rapport à la longueur de la chaîne).



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

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 !