I'm relatively new to Mathematica, and I'm trying to define a function f(k) that would do the following:
For any positive integer $k$, a finite sequence $a_i$ of fractions $\frac{x_i}{y_i}$ is defined by: $$a_1 = \frac{1}{k}\\ a_i = \frac{x_{i-1}+1}{y_{i-1}-1}$$ When $a_i$ reaches some integer $n$, the sequence stops. (That is, when $y_i=1$.) Define $f(k) = n$.
I have the following function written:
f[k_, sofar_] = Module[{num, result},
result =
If[sofar == 0,1/k,((num = Numerator[sofar]) + 1)/(num/sofar - 1)
];
If[IntegerQ[result],result,f[k,result]]
];
f[k_] = f[k, 0]
But I get the result {ComplexInfinity,List} and I don't understand why. What am I doing wrong?
f[q_] := (Numerator[q] + 1) / (Denominator[q] - 1)takes care of the basic iteration step. Read the manual page forNestWhileto find out how to stop the iteration. Generate an initial sequence of results and then look it up in the OEIS for an excellent additional hint (including more Mathematica code). – whuber Mar 07 '13 at 23:27f[num_, denom_] = If[Mod[num, denom] == 0, num, f[(num + 1)/GCD[num + 1, denom - 1], (denom - 1)/ GCD[num + 1, denom - 1]]] f[x1_] = f[1, x1]– Jakob Weisblat Mar 07 '13 at 23:33next[{n_, d_} /; Divisible[n, d]] := n/d; next[{n_, d_}] := Module[{a = (n + 1)/(d - 1)}, {Numerator[a], Denominator[a]}];f[k_] := NestWhile[next, {1, k}, ListQ];And here's what you might consider the ideal:f[n_] := n; f[Rational[n_, d_]] := f[(n + 1)/(d - 1)];usage:f[1/n]– amr Apr 28 '13 at 05:25