Почему результат функции на python отличен от результата на C++ и как исправить?
Функция на Python:
def inv(a, n):
if a == 0:
return 0
lm, hm = 1, 0
low, high = a % n, n
while low > 1:
r = high//low
nm, new = hm-lm*r, high-low*r
lm, low, hm, high = nm, new, lm, low
return lm % n
Функция на C++:
int inv(int a, int n) {
if (a == 0) {
return 0;
}
int lm = 1;
int hm = 0;
int low = a % n;
int high = n;
while (low > 1) {
int r = high / low;
int nm = hm - lm * r;
int nw = high - low * r;
lm = nm;
low = nw;
hm = lm;
high = low;
}
return lm % n;
}
Python: inv(198411, 524287)
-> 448444, C++: inv(198411, 524287)
-> 0
Как исправить функцию на C++ что бы она работала как на Python?