Problem:
Score : 300 points

Problem Statement

You are given four integers A, B, C, and D. Find the number of integers between A and B (inclusive) that can be evenly divided by neither C nor D.

Constraints

1\leq A\leq B\leq 10^{18}

1\leq C,D\leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B C D

Output

Print the number of integers between A and B (inclusive) that can be evenly divided by neither C nor D.

Sample Input 1

4 9 2 3

Sample Output 1

2

5 and 7 satisfy the condition.

Sample Input 2

10 40 6 8

Sample Output 2

23

Sample Input 3

314159265358979323 846264338327950288 419716939 937510582

Sample Output 3

532105071133627368

Solution in Fortran (gfortran v4.8.4) (judge verdict: Accepted)

program main
 implicit none
 integer*16 a,b,c,d,t1,t2,gcd,lcm,p,q,ans
 read(*,*) a,b,c,d
 t1 = c
 t2 = d
 do while( t2 /= 0 )
     gcd = t1
     t1 = t2
     t2 = mod(gcd, t2)
 end do
 gcd = abs(t1)
 lcm = c*d / gcd
 p = b / c + b / d - b / lcm
 q = (a-1) / c + (a-1) / d - (a-1) / lcm
 ans = b - (a-1) - (p - q)
 write(*,*) ans
end program main