All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars    
perplexus dot info

Home > Numbers
Finding the fixes (Posted on 2016-05-29) Difficulty: 4 of 5
Chose a positive integer N.
Repeatedly replace this number by the sum of the cubes of its digits.
Stop once the replacement left the number unchanged.

Show that the "fixed point result" is only one of five possible choices.

List them.

No Solution Yet Submitted by Ady TZIDON    
No Rating

Comments: ( Back to comment list | You must be logged in to post comments.)
Solution computer solution and discussion | Comment 2 of 4 |
5 * 9^3 = 3645, so any number of digits above 4 will reduce the number of digits at each iteration. So we need look only up to 4-digit numbers.

The program below reports the first number where the procedure leads to a given number. The results were:

1 1
2 371
3 153
4 133 55 250 133
7 370
16 217 352 160 217
47 407
49 1099 1459 919 1459
55 55 250 133 55
79 352 160 217 352
136 153 136 244 136
160 160 217 352 160
163 163 244 136 244
250 250 133 55 250
478 478 919 1459 919

There are indeed only 5 fixed points, where the result stays constant: 1, 371, 153, 370 and 407. I would not say, however, that there are only "five possible choices", as one does not know ahead of time that one will hit a fixed point.

Another possibility is that you cycle ... 133 55 250 133 ...
another cycle is ... 217 352 160 217 ...
or back and forth between 919 and 1459 
or between 244 and 136.

So there are 5 fixed points possible, and 4 cycles possible.

DefDbl A-Z
Dim crlf$


Private Sub Form_Load()
 Form1.Visible = True
 
 
 Text1.Text = ""
 crlf = Chr$(13) + Chr$(10)
 
 For n = 1 To 9999
  nn = n
 Do
   ppprev = pprev
   pprev = prev
   prev = nn
   nn = socd(nn)
   DoEvents
  Loop Until nn = prev Or nn = pprev Or nn = ppprev
    s$ = Str(nn)
    If InStr(allNN$, s) = 0 Then
      Text1.Text = Text1.Text & n
      If nn <> prev Then Text1.Text = Text1.Text & Str(ppprev) & Str(pprev) & Str(prev)
      Text1.Text = Text1.Text & s & crlf
      allNN = allNN + s
    End If
 Next
 
 Text1.Text = Text1.Text & crlf & " done"
  
End Sub

Function socd(n)
  s$ = LTrim(Str(n))
  tot = 0
  For i = 1 To Len(s$)
   d = Val(Mid(s$, i, 1))
   tot = tot + d * d * d
  Next
  socd = tot
End Function


  Posted by Charlie on 2016-05-29 11:22:38
Please log in:
Login:
Password:
Remember me:
Sign up! | Forgot password


Search:
Search body:
Forums (0)
Newest Problems
Random Problem
FAQ | About This Site
Site Statistics
New Comments (7)
Unsolved Problems
Top Rated Problems
This month's top
Most Commented On

Chatterbox:
Copyright © 2002 - 2017 by Animus Pactum Consulting. All rights reserved. Privacy Information