OFFSET
1,30
LINKS
Antti Karttunen, Table of n, a(n) for n = 1..65537
FORMULA
EXAMPLE
From Antti Karttunen, Sep 22 2018: (Start)
For n = 1, A063919(1) = 1, that is, we immediately end with a terminal cycle of length 1 without a preceding transient part, thus a(1) = 1.
For n = 2, A063919(2) = 1, and A063919(1) = 1, so we end with a terminal cycle of length 1 (after a transient part of length 1) thus a(2) = 1.
For n = 30, A063919(30) = 42, A063919(42) = 54, A063919(54) = 30, thus a(30) = a(42) = a(54) = 3, as 30, 42 and 54 are all contained in their own terminal cycle of length 3, without a preceding transient part. (End)
For n = 1506, the iteration-list is {1506, 1518, 1938, 2382, 2394, 2406, [2418, 2958, 3522, 3534, 4146, 4158, 3906, 3774, 4434, 4446, 3954, 3966, 3978, 3582, 2418, ..., ad infinitum]}. After a transient of length 6 the iteration ends in a cycle of length 14, thus a(1506) = 14.
MATHEMATICA
a063919[1] = 1; (* function a[] in A063919 by Jean-François Alcover *)
a063919[n_] := Total[Select[Divisors[n], GCD[#, n/#]==1&]]-n/; n>1
cycleLength[k_] := Module[{cycle=NestWhileList[a063919, k, UnsameQ, All]}, Apply[Subtract, Reverse[Flatten[Position[cycle, Last[cycle]], 1]]]]
a097031[n_] := Map[cycleLength, Range[n]]
a097031[105] (* Hartmut F. W. Hoft, Jan 24 2024 *)
PROG
(PARI)
A097031(n) = { my(visited = Map()); for(j=1, oo, if(mapisdefined(visited, n), return(j-mapget(visited, n)), mapput(visited, n, j)); n = A063919(n)); };
\\ Or by using lists:
pil(item, lista) = { for(i=1, #lista, if(lista[i]==item, return(i))); (0); };
A097031(n) = { my(visited = List([]), k); for(j=1, oo, if((k = pil(n, visited)) > 0, return(j-k)); listput(visited, n); n = A063919(n)); }; \\ Antti Karttunen, Sep 22 2018
CROSSREFS
KEYWORD
nonn
AUTHOR
Labos Elemer, Aug 30 2004
STATUS
approved