/**
* Makacha
**/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll x, y, res, n, a[1000111];
inline void Fact(ll x) {
int y = sqrt(x);
for (int i = 2; i <= y; i++) {
if (x % i == 0) {
while (x % i == 0)
x /= i;
a[++n] = i;
}
}
if (x > 1)
a[++n] = x;
}
inline bool Check(ll u, ll v) {
for (int i = 1; i <= n; i++)
if (x % a[i] == 0 && u / a[i] != v / a[i])
return false;
return true;
}
int main() {
cin >> x >> y;
Fact(x);
while (y) {
for (int i = 1; i <= n; i++)
if (x % a[i] == 0 && a[i] <= y)
goto line0;
res += y;
break;
line0:;
ll l = 1, r = y;
while (l <= r) {
ll mid = l + r >> 1;
if (Check(mid, y))
r = mid - 1;
else
l = mid + 1;
}
res += y - l + 1;
y = l / __gcd(x, l) - 1;
x /= __gcd(x, l);
}
cout << res;
}
LyoqCiAgICAqIE1ha2FjaGEKKiovCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKbGwgeCwgeSwgcmVzLCBuLCBhWzEwMDAxMTFdOwppbmxpbmUgdm9pZCBGYWN0KGxsIHgpIHsKICAgIGludCB5ID0gc3FydCh4KTsKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IHk7IGkrKykgewogICAgICAgIGlmICh4ICUgaSA9PSAwKSB7CiAgICAgICAgICAgIHdoaWxlICh4ICUgaSA9PSAwKQogICAgICAgICAgICAgICAgeCAvPSBpOwogICAgICAgICAgICBhWysrbl0gPSBpOwogICAgICAgIH0KICAgIH0KICAgIGlmICh4ID4gMSkKICAgICAgICBhWysrbl0gPSB4Owp9CmlubGluZSBib29sIENoZWNrKGxsIHUsIGxsIHYpIHsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICBpZiAoeCAlIGFbaV0gPT0gMCAmJiB1IC8gYVtpXSAhPSB2IC8gYVtpXSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHRydWU7Cn0KaW50IG1haW4oKSB7CiAgICBjaW4gPj4geCA+PiB5OwogICAgRmFjdCh4KTsKICAgIHdoaWxlICh5KSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgICAgICBpZiAoeCAlIGFbaV0gPT0gMCAmJiBhW2ldIDw9IHkpCiAgICAgICAgICAgICAgICBnb3RvIGxpbmUwOwogICAgICAgIHJlcyArPSB5OwogICAgICAgIGJyZWFrOwogICAgICAgIGxpbmUwOjsKICAgICAgICBsbCBsID0gMSwgciA9IHk7CiAgICAgICAgd2hpbGUgKGwgPD0gcikgewogICAgICAgICAgICBsbCBtaWQgPSBsICsgciA+PiAxOwogICAgICAgICAgICBpZiAoQ2hlY2sobWlkLCB5KSkKICAgICAgICAgICAgICAgIHIgPSBtaWQgLSAxOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBsID0gbWlkICsgMTsKICAgICAgICB9CiAgICAgICAgcmVzICs9IHkgLSBsICsgMTsKICAgICAgICB5ID0gbCAvIF9fZ2NkKHgsIGwpIC0gMTsKICAgICAgICB4IC89IF9fZ2NkKHgsIGwpOwogICAgfQogICAgY291dCA8PCByZXM7Cn0K