def gcd(x, y)
  y == 0 ? x : gcd(y, x % y)
end

def lcm(x, y)
  x / gcd(x, y) * y
end

a, b, c, d = gets.chomp.split.map(&:to_i)

# 範囲に含まれる c の倍数の数
nc = b / c - (a-1) / c

# 範囲に含まれる d の倍数の数
nd = b / d - (a-1) / d

# 範囲に含まれる lcm の数
lc = lcm(c, d)
nlcm = b / lc - (a-1) / lc

ans = b - (a - 1) - nc - nd + nlcm

puts ans
