28 lines
1.0 KiB
Plaintext
28 lines
1.0 KiB
Plaintext
If you add the square of the digits of a Natural number (an integer bigger than zero), you always end with either 1 or 89:
|
|
<pre>15 -> 26 -> 40 -> 16 -> 37 -> 58 -> 89
|
|
7 -> 49 -> 97 -> 130 -> 10 -> 1</pre>
|
|
|
|
An example in Python:
|
|
|
|
<lang python>>>> step = lambda x: sum(int(d) ** 2 for d in str(x))
|
|
>>> iterate = lambda x: x if x in [1, 89] else iterate(step(x))
|
|
>>> [iterate(x) for x in xrange(1, 20)]
|
|
[1, 89, 89, 89, 89, 89, 1, 89, 89, 1, 89, 89, 1, 89, 89, 89, 89, 89, 1]</lang>
|
|
|
|
|
|
;Task:
|
|
: Count how many number chains for integers 1 <= n < 100_000_000 end with a value 89.
|
|
Or, for much less credit - (showing that your algorithm and/or language is slow):
|
|
: Count how many number chains for integers 1 <= n < 1_000_000 end with a value 89.
|
|
|
|
This problem derives from the [https://projecteuler.net/problem=92 Project Euler problem 92].
|
|
|
|
For a quick algorithm for this task see [[Talk:Iterated_digits_squaring|the talk page]]
|
|
|
|
|
|
;Related tasks:
|
|
* [[Combinations with repetitions]]
|
|
* [[Digital root]]
|
|
* [[Digital root/Multiplicative digital root]]
|
|
<br><br>
|