#include <bits/stdc++.h>
using std::swap;
long long a1, b1, a2, b2, l, r;
long long x, y, step;
long long min, max, now;
long long exgcd(long long a, long long b, long long& x, long long& y) {
  if (b % a == 0) {
    x = 1ll;
    y = 0ll;
    return a;
  }
  long long x1, y1;
  long long d = exgcd(b % a, a, x1, y1);
  x = -y1 - b / a * x1;
  y = -x1;
  return d;
}
int main() {
  scanf("%I64d%I64d%I64d%I64d%I64d%I64d", &a1, &b1, &a2, &b2, &l, &r);
  if (a1 > a2) {
    swap(a1, a2);
    swap(b1, b2);
  }
  long long d = exgcd(a1, a2, x, y);
  if ((b2 - b1) % d) {
    printf("0\n");
    return 0;
  }
  step = a1 * a2 / d;
  now = a2 / d * ((b2 - b1) % step) % step * y + b2 % step;
  l = std::max(std::max(b1, b2), l);
  min = now + (l - now) / step * step;
  if (min < l) min += step;
  max = now + (r - now) / step * step;
  if (max > r) max -= step;
  printf("%I64d\n", std::max((max - min) / step + 1, 0ll));
  return 0;
}
