Преобразуйте два числа, пока они не равняются друг другу - PullRequest
0 голосов
/ 16 марта 2020

Учитывая два различных положительных целых числа, a и b, могут ли они когда-либо равняться друг другу при следующих правилах их преобразования (записано в псевдокоде python -esque):

if a < b:
  a = 2a
  b = b-a
elif a > b:
  b = 2b
  a = a-b
else: 
  return True

Пример пары, которая будет равна:

11,21
22,10
12,20
24,8
16,16

И пример пары, которая никогда не будет равняться друг другу:

1,4
2,3
4,1
3,2
1,4
repeating...

Итак, мой вопрос, можете ли вы сказать, что два числа будет равен без выполнения функции, аналогичной приведенной выше, и поиска равенства или бесконечного l oop? Можно ли как-то сказать это, просто взглянув на два числа?

Это напоминает мне гипотезу Коллатца, но с двумя числами вместо одного.

Получив графики всех комбинаций двух чисел (a на оси Y и b на оси X), мы получаем повторяющийся узор. Желтые обозначающие пары, которые будут равны друг другу. Нижний треугольник отсутствует, потому что это зеркало верхнего треугольника. Этот был вычислен с модификацией вышеупомянутой функции. Но было бы здорово не делать этого, потому что это быстро становится неразрешимым.

enter image description here

...