Как получить количество итераций, необходимых, если возможно, для получения 2 элементов массива? - PullRequest
3 голосов
/ 17 июня 2020

Я новичок в алгоритмах и имею дело с проблемой, которую не могу полностью перевести на математический язык.

Итак, мне дан массив [1,1], и я могу выполнить только одну сумму между их количество на шаг, ie вы можете выбрать только между:

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

или

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

, но не оба одновременно

Таким образом,

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.

Цель состоит в том, чтобы узнать, сколько шагов необходимо, чтобы получить данный массив [x, y].

На данный момент я знаю, что

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

Также я построил график для каждой пары (x, y), сколько шагов необходимо сделать, и я могу видеть закономерность для каждого кратного x или y, но я не могу записать его как математическую функцию, когда x или y> = 5.

Мы будем благодарны за любые указания.

Steps needed per (x,y)

Ответы [ 3 ]

3 голосов
/ 17 июня 2020

Когда даны оба x и y, это намного проще, чем если бы только один из них;)

Чтобы понять повторяемость, подумайте, что произойдет, если вы будете обновлять только один сторона для многих шагов. Также подумайте о том, что должно было произойти непосредственно перед тем, как перейти к точке входа.

(Также обратите внимание на сходство с деревьями Калкина-Уилфа и Стерна-Брокота .)

JavaScript код (количество шагов правильное, но отображаемая последовательность пропускает повторяющиеся добавления):

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('');
}
1 голос
/ 17 июня 2020

На вашем графике строка с меткой 1 должна иметь точки вплоть до 40. Точно так же столбец с меткой 1 должен иметь точки вплоть до 30. Таким образом, в графике отсутствует некоторая ключевая информация, которая усложняет шаблоны чтобы заметить.

Вот другая визуализация. Начальная точка [1,1] находится в верхнем левом углу. 1 достижимы, 0 недостижимы. Обратите внимание, что

  • [1,x] доступен для любого x
  • [2,x] достижим, когда x нечетно.
  • [3,x] достижимо, если x не кратно 3
  • [4,x] достижимо, когда x не кратно 2
  • [5,x] достижим, когда x не кратно 5
  • [6,x] достижимо, если x не кратно 2 или 3
  • и, как правило, [y,x] является достижим, когда 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

Вот еще одна визуализация. Точки недоступны. Цифры представляют собой минимальное количество шагов для достижения точки. Обратите внимание, что главная диагональ недоступна, за исключением [1,1]. Также обратите внимание, что последовательность чисел повторяется после главной диагонали (но с добавлением 1 к каждому числу). Например, в строке 5 используется шаблон {5,4,4,5}, который затем повторяется как {6,5,5,6}, затем {7,6,6,7} и т.д. c. Я знаю, что это не полное решение, но, надеюсь, приблизит вас к вашей цели.

 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  . 
0 голосов
/ 17 июня 2020

EDITED Итак, наиболее важным условием не является то, что x & y не могут делиться на 2 или 3, потому что они являются подмножеством x,y, не кратными. Это означает, что наибольший общий делитель (gcd) x, y равен 1.

Я не знал об алгоритме Евклида и о том, как он используется для поиска gcd, как было предложено в CS StackExchange by John L.

Алгоритм, предложенный גלעד בר, полностью верен, но я не тестировал рекурсию со значениями, где x, y> 10 ^ 100.

Другой альтернативой является использование итерации, в которой x & y значений обновляются на каждом шаге.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...