cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A194281 Number of cycles under iteration of sum of cubes of digits in base b.

Original entry on oeis.org

0, 1, 0, 1, 1, 8, 1, 4, 4, 6, 2, 12, 3, 7, 8, 7, 3, 16, 3, 6, 7, 7, 4, 14, 1, 8, 11, 7, 2, 20, 7, 5, 16, 9, 7, 18, 4, 7, 10, 6, 4, 24, 5, 5, 13, 6, 7, 25, 2, 10, 20, 6, 5, 23, 7, 7, 17, 9, 7, 29, 3, 10, 14, 14, 6, 21, 7, 10, 17, 18, 9, 30, 8, 10, 24, 12, 4, 28, 4, 19, 12, 11, 6, 36
Offset: 2

Views

Author

Martin Renner, Aug 22 2011

Keywords

Comments

If b>=2 and n >= 2*b^3, then S(n,3,b)

Examples

			In the decimal system all integers go to (1); (153); (370); (371); (407) or (55, 250,133); (136, 244); (160, 217, 352); (919, 1459) under the iteration of sum of cubes of digits, hence there are five fixed points, two 2-cycles and two 3-cycles. Therefore a(10) = 2 + 2 = 4.
		

Crossrefs

Programs

  • Maple
    S:=proc(n,p,b) local Q,k,N,z; Q:=[n]; for k from 1 do N:=Q[k]; z:=convert(sum(N['i']^p,'i'=1..nops(N)),base,b); if not member(z,Q) then Q:=[op(Q),z]; else Q:=[op(Q),z]; break; fi; od; return Q; end:
    a:=proc(b) local Z,i,A,Q,B,C; A:=[]: for i from 1 to 2*b^3 do Q:=S(convert(i,base,b),3,b); A:={op(A),Q[nops(Q)]}; od: Z:={}: for i from 1 while nops(A)>0 do B:=S(A[1],3,b); C:=[seq(B[i],i=1..nops(B)-1)]: if nops(C)<>1 then Z:={op(Z),C}: fi: A:=A minus {op(B)}; od: return(nops(Z)); end:
    # Martin Renner, Aug 24 2011
  • Sage
    def A194281(n):
        cycle_mins = set()
        seen = {}
        for i in (1..2*n**3):
            if i not in seen:
                path = []
                while not i in path and not i in seen:
                    path.append(i)
                    i = sum(d**3 for d in i.digits(base=n))
                if i not in seen:
                    m = min(path[path.index(i):])
                    if sf(m) != m: cycle_mins.add(m)
                else: m = seen[i]
                for p in path: seen[p] = m
        return len(cycle_mins) # D. S. McNeil, Aug 24 2011