A537. Cibles inaccessibles
Les entiers naturels 1, 2, 3, ... sont pris pour des cibles. Chacune d’elles c est accessible, s’il existe au moins un entier naturel f, appelé flèche, tel que la somme de f et de la somme des chiffres de f est égale à 10c, soit la relation f + sdc(f) = 10c. Par exemple c = 1 est accessible avec f = 5 qui donne 5 + 5 = 10 ainsi que c = 2 avec f = 86 qui donne 86 + 8 + 6 = 100 = 102. A contrario, on dit que c est inaccessible.
Peut-on trouver dix cibles inaccessibles qui se terminent respectivement par 0, 1, 2, 3, ..., 9 ? Solution proposée par Paul Voyer:
Remarque :
La transformation x -> f+sdc(x) est une injection de [0, n] dans [0, n+k(n)] et ne permet pas d'atteindre tous les nombres.
Les nombres non atteignables sont les nombres "colombiens", ou auto nombres ("self numbers"), ou nombres de Devlali, dont les premiers sont 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97, 108, 110, 121, 132, 143, 154, 165, 176, 187, 198, 209, 211, 222, 233, 244, 255, 266, 277, 288, 299, 310, 312, 323, 334, 345, 356, 367, 378, 389, 400, 411, 413, 424, 435, 446, 457, 468, 479, 490, 501, 512, 514, 525.
(http://www.research.att.com/~njas/sequences/A003052)
On recherche les nombres colombiens qui soient une puissance c de 10.
On connaît 100000, pour c=6.
On peut citer les affirmations suivantes :
- 10^k is a self number if and only if 9k-1 is a self number.
- All numbers k such that 10^k is a self number up to 2500 are :
6,16,26,36,46,57,67,77,87,97,107,116,126,136,146,157,167,177,187,197,207,217,226, 236,246,257,267,277,287,297,307,317,327,336,346,357,367,..., 2487,2497.
(http://www.primepuzzles.net/puzzles/puzz_374.htm) Ceux que l'on voit ici se terminent tous par 6 ou par 7.
D. R. Kaprekar's method of testing a number, N, to see if it is a self-number is as follows.
Obtain N's digital root by adding its digits, then adding the digits of the result and so on until only one digit remains. N modulo 9.
If the digital root is odd, add 9 to it and divide by 2.
If it is even, simply divide by 2. In either case call the result C.
Subtract C from N.
Check the remainder to see if it generates N.
If it does not, subtract 9 from the last result and check again.
Continue subtracting 9's, each time checking the result to see if it generates N.
If this fails to produce a generator of N in k steps, where k is the number of digits in N, then N is a self-number.
En utilisant la première affirmation citée, et l'algorithme de D.R. Kaprekar, encadrés, il suffit d'écrire une macro Excel pour trouver que les cibles peuvent se terminer par tous les chiffres de 0 à 9.
Voici les cibles ainsi obtenues pour chacun de ces chiffres :
66660 666661 6666662 66666663 666666664 6666666665 6 57 658 6659
Annexe : Sub Macro1() '
' Macro1 Macro
' Macro enregistrée le 05/10/2010 par Paul Voyer '
'
Cells.Select
Selection.ClearContents Cells(1, 1).Select Dim a(10) z = 1 y = 1
For Index = 6666666660# To 6666666670#
' à ajuster pour les autres valeurs que 5.
c = Index * 9 - 1
k = Int(Log10(c)) + 1 'nombre de chiffres n = c - 4 ' n est-il générateur de c ?
For i = 1 To k ' k itérations max m = Npluschiffres(n)
' m est généré par n If (m = c) Then Exit For 'for i n = n - 9
Next i
If (m = c) Then GoTo NIndex 'for Index
' c est colombien ' affichage des résultats d = c - 10 * Int(c / 10) ' dernier chiffre
If a(d) <> 0 Then GoTo NIndex ' on ne garde que le
a(d) = Index ' plus petit finissant par le chiffre d Cells(10 - d, 1).Value = Index
NIndex: Next Index
End Sub
Function Log10(X)
Log10 = Log(X) / Log(10#) End Function
Function Npluschiffres(X) Npluschiffres = X
For i = 0 To Int(Log10(X)) t = Int(X / 10 ^ i)
Chiffre = t - 10 * Int(t / 10) ' isole le chiffre de rang i
' Excel refuse "modulo" pour les grands nombres Npluschiffres = Npluschiffres + Chiffre
Next i End Function