#include <bits/stdc++.h>
using namespace std;
long long _ceil(long long, long long);
long long _floor(long long a, long long b) {
  return b < 0 ? _floor(-a, -b) : a < 0 ? -_ceil(-a, b) : a / b;
}
long long _ceil(long long a, long long b) {
  return b < 0 ? _ceil(-a, -b) : a < 0 ? -_floor(-a, b) : (a + b - 1) / b;
}
long long ext_gcd(long long a, long long b, long long &x, long long &y) {
  if (a == 0 && b == 0) return -1;
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  long long d = ext_gcd(b, a % b, y, x);
  y -= a / b * x;
  return d;
}
int main() {
  long long a1, b1, a2, b2, l, r;
  while (cin >> a1 >> b1 >> a2 >> b2 >> l >> r) {
    long long A = a1, B = -a2, C = b2 - b1;
    long long x0, y0;
    long long g = ext_gcd(A, B, x0, y0);
    if (C % g) {
      puts("0");
      continue;
    }
    if (g < 0) {
      g = -g;
      x0 = -x0;
      y0 = -y0;
    }
    l = max(0ll, _ceil(l - b1, a1));
    r = _floor(r - b1, a1);
    if (l > r) {
      puts("0");
      continue;
    }
    long long L = _ceil(r * g - x0 * C, B);
    long long R = _floor(l * g - x0 * C, B);
    R = min(R, _floor(y0 * C, A));
    long long ans = max(0ll, R - L + 1);
    cout << ans << endl;
  }
  return 0;
}
