How to get the number of iterations needed, if possible, to get 2 elements of an array?

Viewed 401

I am fairly new to algorithms and I am dealing with a problem I cannot fully translate into mathematical language.

So, I am given the array [1,1] and I can only perform one sum between their numbers per step, ie you can only pick between:

[x(s+1), y(s+1)]=[x(s)+y(s),y(s)]

or

[x(s+1),y(s+1)]=[x(s), x(s)+y(s)]

but not both at the same time

Thus,

0: [1,1]
1: [2,1],                      [1,2]
2: [3,1],        [2,3],        [3,2],        [1,3]
3: [4,1], [3,4], [5,3], [2,5], [5,2], [3,5], [4,3], [1,4]
...and so on.

The goal is to know how many steps are needed in order to get a given [x,y] array.

This far, I know that

if (min(x,y)==1):
   steps =max(x,y)-1

if (x%2 ==0 and y%2==0):
   steps= not possible
if (max(x,y)%min(x,y) == 0):
   steps= not possible
if (x%3 ==0 and y%3==0):
   steps= not possible

Also I plotted for each pair (x,y) how many steps are needed, and I can see a pattern happening for every multiple of x or y, but I can't write it as a mathematical function when x or y is >= 5.

Any guidance will be much appreciated.

Steps needed per (x,y)

3 Answers

When both x and y are given, this is much simpler than if only one of them is ;)

To understand the recurrence, think of what happens if you stick to updating only one side for many steps. Also think of what must have happened just before getting to the point where the input is.

(Also note the similarity to the Calkin-Wilf and Stern-Brocot trees.)

JavaScript code (the number of steps is correct but the displayed sequence skips repeated additions):

var showSequence = 1;

function g(m, n){
  if (showSequence)
    console.log(m, n);

  if (m == 0 || n == 0)
    return Infinity;
  
  if (m == 1 || n == 1)
    return Math.max(m, n) - 1;
  
  if (m > n)
    return Math.floor(m / n) + g(m % n, n);
  else
    return Math.floor(n / m) + g(m, n % m);
}

var pairs = [
  [2, 5],
  [3, 7],
  [19, 4]
];

for (let [x,y] of pairs){
  console.log(g(x, y));
  console.log('');
}

In your plot, the row labeled 1 should have dots all the way out to 40. Likewise, the column labeled 1 should have dots all the way up to 30. So the plot is missing some key information that makes the patterns hard to spot.

Here's a different visualization. The starting point [1,1] is in the upper left. 1s are reachable, 0s are unreachable. Notice that

  • [1,x] is reachable for any x
  • [2,x] is reachable when x is odd.
  • [3,x] is reachable when x is not a multiple of 3
  • [4,x] is reachable when x is not a multiple of 2
  • [5,x] is reachable when x is not a multiple of 5
  • [6,x] is reachable when x is not a multiple of 2 or 3
  • and in general, [y,x] is reachable when gcd(y,x) == 1
             1         2         3         4         5         6   
    123456789012345678901234567890123456789012345678901234567890123
   +---------------------------------------------------------------
 1 |111111111111111111111111111111111111111111111111111111111111111
 2 |101010101010101010101010101010101010101010101010101010101010101
 3 |110110110110110110110110110110110110110110110110110110110110110
 4 |101010101010101010101010101010101010101010101010101010101010101
 5 |111101111011110111101111011110111101111011110111101111011110111
 6 |100010100010100010100010100010100010100010100010100010100010100
 7 |111111011111101111110111111011111101111110111111011111101111110
 8 |101010101010101010101010101010101010101010101010101010101010101
 9 |110110110110110110110110110110110110110110110110110110110110110
10 |101000101010100010101010001010101000101010100010101010001010101
11 |111111111101111111111011111111110111111111101111111111011111111
12 |100010100010100010100010100010100010100010100010100010100010100
13 |111111111111011111111111101111111111110111111111111011111111111
14 |101010001010101010100010101010101000101010101010001010101010100
15 |110100110010110110100110010110110100110010110110100110010110110
16 |101010101010101010101010101010101010101010101010101010101010101
17 |111111111111111101111111111111111011111111111111110111111111111
18 |100010100010100010100010100010100010100010100010100010100010100
19 |111111111111111111011111111111111111101111111111111111110111111
20 |101000101010100010101010001010101000101010100010101010001010101
21 |110110010110100110110110110010110100110110110110010110100110110
22 |101010101000101010101010101010100010101010101010101010001010101
23 |111111111111111111111101111111111111111111111011111111111111111
24 |100010100010100010100010100010100010100010100010100010100010100
25 |111101111011110111101111011110111101111011110111101111011110111
26 |101010101010001010101010101010101010100010101010101010101010101
27 |110110110110110110110110110110110110110110110110110110110110110
28 |101010001010101010100010101010101000101010101010001010101010100
29 |111111111111111111111111111101111111111111111111111111111011111
30 |100000100010100010100010000010100000100010100010100010000010100
31 |111111111111111111111111111111011111111111111111111111111111101
32 |101010101010101010101010101010101010101010101010101010101010101
33 |110110110100110110110010110110110110110110100110110110010110110
34 |101010101010101000101010101010101010101010101010100010101010101
35 |111101011011100111100111011010111101111010110111001111001110110
36 |100010100010100010100010100010100010100010100010100010100010100
37 |111111111111111111111111111111111111011111111111111111111111111
38 |101010101010101010001010101010101010101010101010101010100010101
39 |110110110110010110110110100110110110110110110110110010110110110
40 |101000101010100010101010001010101000101010100010101010001010101
41 |111111111111111111111111111111111111111101111111111111111111111
42 |100010000010100010100010100010100000100010100010000010100010100
43 |111111111111111111111111111111111111111111011111111111111111111
44 |101010101000101010101010101010100010101010101010101010001010101
45 |110100110010110110100110010110110100110010110110100110010110110
46 |101010101010101010101000101010101010101010101010101010101010101
47 |111111111111111111111111111111111111111111111101111111111111111
48 |100010100010100010100010100010100010100010100010100010100010100
49 |111111011111101111110111111011111101111110111111011111101111110
50 |101000101010100010101010001010101000101010100010101010001010101
51 |110110110110110100110110110110110010110110110110110110110110110
52 |101010101010001010101010101010101010100010101010101010101010101
53 |111111111111111111111111111111111111111111111111111101111111111
54 |100010100010100010100010100010100010100010100010100010100010100
55 |111101111001110111101011011110110101111011100111101111011110111
56 |101010001010101010100010101010101000101010101010001010101010100
57 |110110110110110110010110110110110110100110110110110110110110110
58 |101010101010101010101010101000101010101010101010101010101010101
59 |111111111111111111111111111111111111111111111111111111111101111
60 |100000100010100010100010000010100000100010100010100010000010100
61 |111111111111111111111111111111111111111111111111111111111111011
62 |101010101010101010101010101010001010101010101010101010101010101
63 |110110010110100110110110110010110100110110110110010110100110110

Here's yet another visualization. Dots are unreachable. The numbers represent the minimum number of steps to reach a point. Notice that the main diagonal is never reachable except for [1,1]. Also note that the pattern of numbers repeats after the main diagonal (but with 1 added to every number). For example on row 5, the pattern is {5,4,4,5} which then repeats as {6,5,5,6}, then {7,6,6,7}, etc. Not a complete solution, I know, but hopefully brings you a little closer to your goal.

 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 
 2  .  3  .  4  .  5  .  6  .  7  .  8  .  9  . 10  . 11  . 12  . 13  . 14  . 15  . 16  . 17  . 18  . 19  . 20  . 21  . 22  . 23  . 24  . 25  . 26  . 27  . 28  . 29  . 30  . 31  . 32  . 33 
 3  3  .  4  4  .  5  5  .  6  6  .  7  7  .  8  8  .  9  9  . 10 10  . 11 11  . 12 12  . 13 13  . 14 14  . 15 15  . 16 16  . 17 17  . 18 18  . 19 19  . 20 20  . 21 21  . 22 22  . 23 23  . 
 4  .  4  .  5  .  5  .  6  .  6  .  7  .  7  .  8  .  8  .  9  .  9  . 10  . 10  . 11  . 11  . 12  . 12  . 13  . 13  . 14  . 14  . 15  . 15  . 16  . 16  . 17  . 17  . 18  . 18  . 19  . 19 
 5  4  4  5  .  6  5  5  6  .  7  6  6  7  .  8  7  7  8  .  9  8  8  9  . 10  9  9 10  . 11 10 10 11  . 12 11 11 12  . 13 12 12 13  . 14 13 13 14  . 15 14 14 15  . 16 15 15 16  . 17 16 16 
 6  .  .  .  6  .  7  .  .  .  7  .  8  .  .  .  8  .  9  .  .  .  9  . 10  .  .  . 10  . 11  .  .  . 11  . 12  .  .  . 12  . 13  .  .  . 13  . 14  .  .  . 14  . 15  .  .  . 15  . 16  .  . 
 7  5  5  5  5  7  .  8  6  6  6  6  8  .  9  7  7  7  7  9  . 10  8  8  8  8 10  . 11  9  9  9  9 11  . 12 10 10 10 10 12  . 13 11 11 11 11 13  . 14 12 12 12 12 14  . 15 13 13 13 13 15  . 
 8  .  5  .  5  .  8  .  9  .  6  .  6  .  9  . 10  .  7  .  7  . 10  . 11  .  8  .  8  . 11  . 12  .  9  .  9  . 12  . 13  . 10  . 10  . 13  . 14  . 11  . 11  . 14  . 15  . 12  . 12  . 15 
 9  6  .  6  6  .  6  9  . 10  7  .  7  7  .  7 10  . 11  8  .  8  8  .  8 11  . 12  9  .  9  9  .  9 12  . 13 10  . 10 10  . 10 13  . 14 11  . 11 11  . 11 14  . 15 12  . 12 12  . 12 15  . 
10  .  6  .  .  .  6  . 10  . 11  .  7  .  .  .  7  . 11  . 12  .  8  .  .  .  8  . 12  . 13  .  9  .  .  .  9  . 13  . 14  . 10  .  .  . 10  . 14  . 15  . 11  .  .  . 11  . 15  . 16  . 12 
11  7  6  6  7  7  6  6  7 11  . 12  8  7  7  8  8  7  7  8 12  . 13  9  8  8  9  9  8  8  9 13  . 14 10  9  9 10 10  9  9 10 14  . 15 11 10 10 11 11 10 10 11 15  . 16 12 11 11 12 12 11 11 
12  .  .  .  6  .  6  .  .  . 12  . 13  .  .  .  7  .  7  .  .  . 13  . 14  .  .  .  8  .  8  .  .  . 14  . 15  .  .  .  9  .  9  .  .  . 15  . 16  .  .  . 10  . 10  .  .  . 16  . 17  .  . 
13  8  7  7  6  8  8  6  7  7  8 13  . 14  9  8  8  7  9  9  7  8  8  9 14  . 15 10  9  9  8 10 10  8  9  9 10 15  . 16 11 10 10  9 11 11  9 10 10 11 16  . 17 12 11 11 10 12 12 10 11 11 12 
14  .  7  .  7  .  .  .  7  .  7  . 14  . 15  .  8  .  8  .  .  .  8  .  8  . 15  . 16  .  9  .  9  .  .  .  9  .  9  . 16  . 17  . 10  . 10  .  .  . 10  . 10  . 17  . 18  . 11  . 11  .  . 
15  9  .  7  .  .  9  9  .  .  7  .  9 15  . 16 10  .  8  .  . 10 10  .  .  8  . 10 16  . 17 11  .  9  .  . 11 11  .  .  9  . 11 17  . 18 12  . 10  .  . 12 12  .  . 10  . 12 18  . 19 13  . 
16  .  8  .  8  .  7  .  7  .  8  .  8  . 16  . 17  .  9  .  9  .  8  .  8  .  9  .  9  . 17  . 18  . 10  . 10  .  9  .  9  . 10  . 10  . 18  . 19  . 11  . 11  . 10  . 10  . 11  . 11  . 19 
17 10  8  8  7  8  7 10 10  7  8  7  8  8 10 17  . 18 11  9  9  8  9  8 11 11  8  9  8  9  9 11 18  . 19 12 10 10  9 10  9 12 12  9 10  9 10 10 12 19  . 20 13 11 11 10 11 10 13 13 10 11 10 
18  .  .  .  7  .  7  .  .  .  7  .  7  .  .  . 18  . 19  .  .  .  8  .  8  .  .  .  8  .  8  .  .  . 19  . 20  .  .  .  9  .  9  .  .  .  9  .  9  .  .  . 20  . 21  .  .  . 10  . 10  .  . 
19 11  9  8  8  9  7  7 11 11  7  7  9  8  8  9 11 19  . 20 12 10  9  9 10  8  8 12 12  8  8 10  9  9 10 12 20  . 21 13 11 10 10 11  9  9 13 13  9  9 11 10 10 11 13 21  . 22 14 12 11 11 12 
20  .  9  .  .  .  9  .  8  .  8  .  9  .  .  .  9  . 20  . 21  . 10  .  .  . 10  .  9  .  9  . 10  .  .  . 10  . 21  . 22  . 11  .  .  . 11  . 10  . 10  . 11  .  .  . 11  . 22  . 23  . 12 
21 12  .  9  9  .  .  7  . 12 12  .  7  .  .  9  9  . 12 21  . 22 13  . 10 10  .  .  8  . 13 13  .  8  .  . 10 10  . 13 22  . 23 14  . 11 11  .  .  9  . 14 14  .  9  .  . 11 11  . 14 23  . 
22  . 10  .  8  . 10  .  8  .  .  .  8  . 10  .  8  . 10  . 22  . 23  . 11  .  9  . 11  .  9  .  .  .  9  . 11  .  9  . 11  . 23  . 24  . 12  . 10  . 12  . 10  .  .  . 10  . 12  . 10  . 12 
23 13 10  9  8  9  8 10  8  8 13 13  8  8 10  8  9  8  9 10 13 23  . 24 14 11 10  9 10  9 11  9  9 14 14  9  9 11  9 10  9 10 11 14 24  . 25 15 12 11 10 11 10 12 10 10 15 15 10 10 12 10 11 
24  .  .  .  9  .  8  .  .  .  9  .  9  .  .  .  8  .  9  .  .  . 24  . 25  .  .  . 10  .  9  .  .  . 10  . 10  .  .  .  9  . 10  .  .  . 25  . 26  .  .  . 11  . 10  .  .  . 11  . 11  .  . 
25 14 11 10  . 10  8 11  8  .  8 14 14  8  .  8 11  8 10  . 10 11 14 25  . 26 15 12 11  . 11  9 12  9  .  9 15 15  9  .  9 12  9 11  . 11 12 15 26  . 27 16 13 12  . 12 10 13 10  . 10 16 16 
26  . 11  . 10  .  8  . 11  .  8  .  .  .  8  . 11  .  8  . 10  . 11  . 26  . 27  . 12  . 11  .  9  . 12  .  9  .  .  .  9  . 12  .  9  . 11  . 12  . 27  . 28  . 13  . 12  . 10  . 13  . 10 
27 15  . 10  9  . 10  8  .  8  9  . 15 15  .  9  8  .  8 10  .  9 10  . 15 27  . 28 16  . 11 10  . 11  9  .  9 10  . 16 16  . 10  9  .  9 11  . 10 11  . 16 28  . 29 17  . 12 11  . 12 10  . 
28  . 12  .  9  .  .  . 12  .  9  . 10  . 10  .  9  . 12  .  .  .  9  . 12  . 28  . 29  . 13  . 10  .  .  . 13  . 10  . 11  . 11  . 10  . 13  .  .  . 10  . 13  . 29  . 30  . 14  . 11  .  . 
29 16 12 11 10 10 11  8  9 12  8  8  9 16 16  9  8  8 12  9  8 11 10 10 11 12 16 29  . 30 17 13 12 11 11 12  9 10 13  9  9 10 17 17 10  9  9 13 10  9 12 11 11 12 13 17 30  . 31 18 14 13 12 
30  .  .  .  .  .  9  .  .  .  8  .  9  .  .  .  9  .  8  .  .  .  9  .  .  .  .  . 30  . 31  .  .  .  .  . 10  .  .  .  9  . 10  .  .  . 10  .  9  .  .  . 10  .  .  .  .  . 31  . 32  .  . 
31 17 13 11 11 11  9 11  9 13  9  8  8  9 17 17  9  8  8  9 13  9 11  9 11 11 11 13 17 31  . 32 18 14 12 12 12 10 12 10 14 10  9  9 10 18 18 10  9  9 10 14 10 12 10 12 12 12 14 18 32  . 33 
32  . 13  . 10  .  9  .  9  . 13  . 10  . 11  . 11  . 10  . 13  .  9  .  9  . 10  . 13  . 32  . 33  . 14  . 11  . 10  . 10  . 14  . 11  . 12  . 12  . 11  . 14  . 10  . 10  . 11  . 14  . 33 
33 18  . 12 10  .  9 12  .  9  .  . 10  9  . 18 18  .  9 10  .  .  9  . 12  9  . 10 12  . 18 33  . 34 19  . 13 11  . 10 13  . 10  .  . 11 10  . 19 19  . 10 11  .  . 10  . 13 10  . 11 13  . 
34  . 14  . 11  . 11  .  9  . 14  .  8  .  9  .  .  .  9  .  8  . 14  .  9  . 11  . 11  . 14  . 34  . 35  . 15  . 12  . 12  . 10  . 15  .  9  . 10  .  .  . 10  .  9  . 15  . 10  . 12  . 12 
35 19 14 12  . 11  .  9 12  . 10 14  9  .  . 10 19 19 10  .  .  9 14 10  . 12  9  . 11  . 12 14 19 35  . 36 20 15 13  . 12  . 10 13  . 11 15 10  .  . 11 20 20 11  .  . 10 15 11  . 13 10  . 
36  .  .  . 12  . 12  .  .  .  9  .  9  .  .  . 12  . 12  .  .  .  9  .  9  .  .  . 12  . 12  .  .  . 36  . 37  .  .  . 13  . 13  .  .  . 10  . 10  .  .  . 13  . 13  .  .  . 10  . 10  .  . 
37 20 15 13 11 12 10  9 13  9  9 15 10  9 11 10 10 20 20 10 10 11  9 10 15  9  9 13  9 10 12 11 13 15 20 37  . 38 21 16 14 12 13 11 10 14 10 10 16 11 10 12 11 11 21 21 11 11 12 10 11 16 10 
38  . 15  . 11  . 10  . 10  . 10  . 15  . 11  . 10  .  .  . 10  . 11  . 15  . 10  . 10  . 10  . 11  . 15  . 38  . 39  . 16  . 12  . 11  . 11  . 11  . 16  . 12  . 11  .  .  . 11  . 12  . 16 
39 21  . 13 12  . 10 12  . 13 10  .  .  9  .  9  9  . 21 21  .  9  9  .  9  .  . 10 13  . 12 10  . 12 13  . 21 39  . 40 22  . 14 13  . 11 13  . 14 11  .  . 10  . 10 10  . 22 22  . 10 10  . 
40  . 16  .  .  . 10  . 10  .  9  . 16  .  .  . 10  . 13  . 13  . 10  .  .  . 16  .  9  . 10  . 10  .  .  . 16  . 40  . 41  . 17  .  .  . 11  . 11  . 10  . 17  .  .  . 11  . 14  . 14  . 11 
41 22 16 14 13 12 12 13 10 14  9  9 11 16  9  9  9  9 11 22 22 11  9  9  9  9 16 11  9  9 14 10 13 12 12 13 14 16 22 41  . 42 23 17 15 14 13 13 14 11 15 10 10 12 17 10 10 10 10 12 23 23 12 
42  .  .  . 12  .  .  .  .  . 10  . 10  .  .  . 12  . 10  .  .  . 10  . 12  .  .  . 10  . 10  .  .  .  .  . 12  .  .  . 42  . 43  .  .  . 13  .  .  .  .  . 11  . 11  .  .  . 13  . 11  .  . 
43 23 17 14 12 13 13 10 10 10 14  9 10 17 11 10 12  9 10 11 23 23 11 10  9 12 10 11 17 10  9 14 10 10 10 13 13 12 14 17 23 43  . 44 24 18 15 13 14 14 11 11 11 15 10 11 18 12 11 13 10 11 12 
44  . 17  . 13  . 11  . 13  .  .  .  9  . 17  .  9  . 11  . 14  . 14  . 11  .  9  . 17  .  9  .  .  . 13  . 11  . 13  . 17  . 44  . 45  . 18  . 14  . 12  . 14  .  .  . 10  . 18  . 10  . 12 
45 24  . 15  .  . 11 10  .  . 15  . 11 10  . 10 10  .  9  .  . 24 24  .  .  9  . 10 10  . 10 11  . 15  .  . 10 11  .  . 15  . 24 45  . 46 25  . 16  .  . 12 11  .  . 16  . 12 11  . 11 11  . 
46  . 18  . 14  . 11  . 14  . 11  . 11  . 18  .  9  .  9  . 11  .  .  . 11  .  9  .  9  . 18  . 11  . 11  . 14  . 11  . 14  . 18  . 46  . 47  . 19  . 15  . 12  . 15  . 12  . 12  . 19  . 10 
47 25 18 15 13 13 11 13 11 10 10 15  9 10 12 18 10  9 13 11 11 12 25 25 12 11 11 13  9 10 18 12 10  9 15 10 10 11 13 11 13 13 15 18 25 47  . 48 26 19 16 14 14 12 14 12 11 11 16 10 11 13 19 
48  .  .  . 13  . 13  .  .  . 10  . 10  .  .  . 10  . 13  .  .  . 15  . 15  .  .  . 13  . 10  .  .  . 10  . 10  .  .  . 13  . 13  .  .  . 48  . 49  .  .  . 14  . 14  .  .  . 11  . 11  .  . 
49 26 19 16 14 14  . 14 11 14 11 16 10  . 10 19 12  9  9 10  . 10 12 26 26 12 10  . 10  9  9 12 19 10  . 10 16 11 14 11 14  . 14 14 16 19 26 49  . 50 27 20 17 15 15  . 15 12 15 12 17 11  . 
50  . 19  .  .  . 14  . 11  . 11  . 11  .  .  . 19  .  9  .  9  . 11  .  .  . 11  .  9  .  9  . 19  .  .  . 11  . 11  . 11  . 14  .  .  . 19  . 50  . 51  . 20  .  .  . 15  . 12  . 12  . 12 
51 27  . 16 15  . 12 11  . 15 10  . 16 10  . 11  .  . 11 10  . 12 10  . 27 27  . 10 12  . 10 11  .  . 11  . 10 16  . 10 15  . 11 12  . 15 16  . 27 51  . 52 28  . 17 16  . 13 12  . 16 11  . 
52  . 20  . 14  . 12  . 11  . 10  .  .  . 12  . 20  . 10  . 14  . 11  . 16  . 16  . 11  . 14  . 10  . 20  . 12  .  .  . 10  . 11  . 12  . 14  . 20  . 52  . 53  . 21  . 15  . 13  . 12  . 11 
53 28 20 17 14 14 12 11 14 11 11 10 17 10 12 11 13 20 10 11 14 10 10 11 13 28 28 13 11 10 10 14 11 10 20 13 11 12 10 17 10 11 11 14 11 12 14 14 17 20 28 53  . 54 29 21 18 15 15 13 12 15 12 
54  .  .  . 15  . 12  .  .  . 15  . 12  .  .  . 11  . 11  .  .  . 12  . 12  .  .  . 12  . 12  .  .  . 11  . 11  .  .  . 12  . 15  .  .  . 12  . 15  .  .  . 54  . 55  .  .  . 16  . 13  .  . 
55 29 21 17  . 15 14 14 15  .  . 10 11 17  . 10 11 21 13  .  9  . 10 10  . 13 29 29 13  . 10 10  .  9  . 13 21 11 10  . 17 11 10  .  . 15 14 14 15  . 17 21 29 55  . 56 30 22 18  . 16 15 15 
56  . 21  . 16  .  .  . 12  . 16  . 11  . 10  . 10  . 21  .  .  . 10  . 12  . 17  . 17  . 12  . 10  .  .  . 21  . 10  . 10  . 11  . 16  . 12  .  .  . 16  . 21  . 56  . 57  . 22  . 17  .  . 
57 30  . 18 15  . 15 15  . 11 12  . 10 18  . 10 11  .  . 11  . 10 15  . 10 12  . 30 30  . 12 10  . 15 10  . 11  .  . 11 10  . 18 10  . 12 11  . 15 15  . 15 18  . 30 57  . 58 31  . 19 16  . 
58  . 22  . 15  . 13  . 12  . 11  . 12  . 12  . 10  . 22  . 11  . 15  . 13  . 12  .  .  . 12  . 13  . 15  . 11  . 22  . 10  . 12  . 12  . 11  . 12  . 13  . 15  . 22  . 58  . 59  . 23  . 16 
59 31 22 18 16 15 13 12 12 15 11 16 12 11 18 11 13 10 14 22 11 12 10 11 10 10 11 14 31 31 14 11 10 10 11 10 12 11 22 14 10 13 11 18 11 12 16 11 15 12 12 13 15 16 18 22 31 59  . 60 32 23 19 
60  .  .  .  .  . 13  .  .  . 12  . 10  .  .  . 13  . 12  .  .  . 10  .  .  .  .  . 18  . 18  .  .  .  .  . 10  .  .  . 12  . 13  .  .  . 10  . 12  .  .  . 13  .  .  .  .  . 60  . 61  .  . 
61 32 23 19 17 16 13 12 12 16 12 17 11 11 19 11 10 10 11 23 14 10 12 11 10 13 12 11 14 32 32 14 11 12 13 10 11 12 10 14 23 11 10 10 11 19 11 11 17 12 16 12 12 13 16 17 19 23 32 61  . 62 33 
62  . 23  . 16  . 15  . 15  . 11  . 11  . 13  . 11  . 11  . 23  . 10  . 16  . 10  . 13  .  .  . 13  . 10  . 16  . 10  . 23  . 11  . 11  . 13  . 11  . 11  . 15  . 15  . 16  . 23  . 62  . 63 
63 33  . 19 16  .  . 15  . 12 11  . 12  .  . 19 10  . 12 12  . 12 11  . 16 10  .  . 12  . 33 33  . 12  .  . 10 16  . 11 12  . 12 12  . 10 19  .  . 12  . 11 12  . 15  .  . 16 19  . 33 63  . 

EDITED So, the most important condition isn't that x & y cannot both be divisible by 2 or 3, because those are a subset of x,y not being multiples. This means that the greatest common divisor (gcd) of x,y is 1.

I wasn't aware about the Euclidean algorithm and how it is used to find gcd, as was suggested in CS StackExchange by John L.

The algorithm proposed by גלעד ברקן is totally valid, but I haven't tested the recurssion with values where x, y > 10^100.

The other alternative is to use an iteration where x & y values are updated at each step.

def number_of_iterations_needed(x, y):
    count = 0

    if x < y:
        x, y = y, x
    # Now x >= y

    while x % y != 0:
        count += x // y
        x, y = y, x % y
    # Now x % y == 0

    if y != 1:
        return None  # impossible
    else:
        count += x - y
        return count
Related