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 C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;
class Program{
    public static void Main(string[] args){
    var vals = Console.ReadLine().Split().Select(x => long.Parse(x)).ToList();
    var A=vals[0];
    var B=vals[1];
    var C=vals[2];
    var D=vals[3];
    Console.WriteLine(divide(B,C,D)-divide(A-1,C,D));
    }
static long divide(long N, long C, long D){
    var CD=Lcm(C,D);
return N-N/C-N/D+N/CD;
}

    static long Gcd(long a, long b)
 {
     var v = new[] { a, b };
     while (v[1] != 0) { v = new[] { v[1], v[0] % v[1] }; }
     return v[0];
 }
  static long Lcm(long a, long b)
 {
     return a / Gcd(a, b) * b;
 }

    
}