Целые точки отрезка (задача)

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

Формат ввода
Даны четыре целых числа – координаты концов отрезка (x1, y1) и (x2, y2). Каждая из координат не превышает по абсолютной величине значения 1000.
Формат вывода
Требуется вывести количество точек отрезка, имеющих целочисленные координаты.

Пример 1
Ввод
1 0 5 0
Вывод 5
Пример 2
Ввод
-1 -2 2 4
Вывод 4
Пример 3
Ввод
130 -693 73 -705
Вывод 4

мой код:

def gcd_rem_division(num1, num2):
    while num1 != 0 and num2 != 0:
        if num1 >= num2:
            num1 %= num2
        else:
            num2 %= num1
    return num1 or num2
 
x1,y1,x2,y2 = map(int, input().split())
if x1 == x2 and y1 == y2:
    print(1)
elif x1 == x2 and y1 != y2:
    print(abs(y2-y1)+1)
elif y1 == y2 and x1 != x2:
    print(abs(x2-x1)+1)
else:
    if x1 > x2:
        x1,x2 = x2,x1t
    print(gcd_rem_division(x2 - x1, y2 - y1) + 1)

Так у вас на 3 примере проявляется зацикливание. Ваш gcd_rem_division только для неотрицательных чисел подходит, похоже. Да и не нужно столько if:

x1, y1, x2, y2 = map(int, input().split())
print(gcd_rem_division(abs(x2 - x1), abs(y2 - y1)) + 1)
2 лайка