import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong();
        long b = sc.nextLong();
        long c = sc.nextLong();
        long d = sc.nextLong();

        long cyaku = 0;
        long dyaku = 0;

        long max = b - a + 1;

        cyaku = (b / c) - ((a-1) / c);


        dyaku = (b / d) - ((a-1) / d);


        long yakusum = cyaku + dyaku;

        long lcm = lcm(c, d);
        yakusum -= (b / lcm) - ((a-1) / lcm);

        System.out.println(max - yakusum);
    }

    static long lcm (long a, long b) {
        long temp;
        long c = a;
        c *= b;
        while((temp = a%b)!=0) {
            a = b;
            b = temp;
        }
        return (c/b);
    }
} import java.util.Scanner; Scanner java.util public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong();
        long b = sc.nextLong();
        long c = sc.nextLong();
        long d = sc.nextLong();

        long cyaku = 0;
        long dyaku = 0;

        long max = b - a + 1;

        cyaku = (b / c) - ((a-1) / c);


        dyaku = (b / d) - ((a-1) / d);


        long yakusum = cyaku + dyaku;

        long lcm = lcm(c, d);
        yakusum -= (b / lcm) - ((a-1) / lcm);

        System.out.println(max - yakusum);
    }

    static long lcm (long a, long b) {
        long temp;
        long c = a;
        c *= b;
        while((temp = a%b)!=0) {
            a = b;
            b = temp;
        }
        return (c/b);
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong();
        long b = sc.nextLong();
        long c = sc.nextLong();
        long d = sc.nextLong();

        long cyaku = 0;
        long dyaku = 0;

        long max = b - a + 1;

        cyaku = (b / c) - ((a-1) / c);


        dyaku = (b / d) - ((a-1) / d);


        long yakusum = cyaku + dyaku;

        long lcm = lcm(c, d);
        yakusum -= (b / lcm) - ((a-1) / lcm);

        System.out.println(max - yakusum);
    } main {
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong();
        long b = sc.nextLong();
        long c = sc.nextLong();
        long d = sc.nextLong();

        long cyaku = 0;
        long dyaku = 0;

        long max = b - a + 1;

        cyaku = (b / c) - ((a-1) / c);


        dyaku = (b / d) - ((a-1) / d);


        long yakusum = cyaku + dyaku;

        long lcm = lcm(c, d);
        yakusum -= (b / lcm) - ((a-1) / lcm);

        System.out.println(max - yakusum);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) long a = sc.nextLong(); a sc.nextLong() sc.nextLong sc long b = sc.nextLong(); b sc.nextLong() sc.nextLong sc long c = sc.nextLong(); c sc.nextLong() sc.nextLong sc long d = sc.nextLong(); d sc.nextLong() sc.nextLong sc long cyaku = 0; cyaku 0 long dyaku = 0; dyaku 0 long max = b - a + 1; max b - a + 1 b - a b a 1 cyaku = (b / c) - ((a-1) / c) cyaku (b / c) - ((a-1) / c) (b / c) b c ((a-1) / c) (a-1) a 1 c dyaku = (b / d) - ((a-1) / d) dyaku (b / d) - ((a-1) / d) (b / d) b d ((a-1) / d) (a-1) a 1 d long yakusum = cyaku + dyaku; yakusum cyaku + dyaku cyaku dyaku long lcm = lcm(c, d); lcm lcm(c, d) lcm c d yakusum -= (b / lcm) - ((a-1) / lcm) yakusum (b / lcm) - ((a-1) / lcm) (b / lcm) b lcm ((a-1) / lcm) (a-1) a 1 lcm System.out.println(max - yakusum) System.out.println System.out System System.out max - yakusum max yakusum String[] args args static long lcm (long a, long b) {
        long temp;
        long c = a;
        c *= b;
        while((temp = a%b)!=0) {
            a = b;
            b = temp;
        }
        return (c/b);
    } lcm {
        long temp;
        long c = a;
        c *= b;
        while((temp = a%b)!=0) {
            a = b;
            b = temp;
        }
        return (c/b);
    } long temp; temp long c = a; c a c *= b c b while((temp = a%b)!=0) {
            a = b;
            b = temp;
        } (temp = a%b)!=0 (temp = a%b) temp a%b a b 0 {
            a = b;
            b = temp;
        } a = b a b b = temp b temp return (c/b); (c/b) c b long a a long b b public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong();
        long b = sc.nextLong();
        long c = sc.nextLong();
        long d = sc.nextLong();

        long cyaku = 0;
        long dyaku = 0;

        long max = b - a + 1;

        cyaku = (b / c) - ((a-1) / c);


        dyaku = (b / d) - ((a-1) / d);


        long yakusum = cyaku + dyaku;

        long lcm = lcm(c, d);
        yakusum -= (b / lcm) - ((a-1) / lcm);

        System.out.println(max - yakusum);
    }

    static long lcm (long a, long b) {
        long temp;
        long c = a;
        c *= b;
        while((temp = a%b)!=0) {
            a = b;
            b = temp;
        }
        return (c/b);
    }
} public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong();
        long b = sc.nextLong();
        long c = sc.nextLong();
        long d = sc.nextLong();

        long cyaku = 0;
        long dyaku = 0;

        long max = b - a + 1;

        cyaku = (b / c) - ((a-1) / c);


        dyaku = (b / d) - ((a-1) / d);


        long yakusum = cyaku + dyaku;

        long lcm = lcm(c, d);
        yakusum -= (b / lcm) - ((a-1) / lcm);

        System.out.println(max - yakusum);
    }

    static long lcm (long a, long b) {
        long temp;
        long c = a;
        c *= b;
        while((temp = a%b)!=0) {
            a = b;
            b = temp;
        }
        return (c/b);
    }
} Main
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong();
        long b = sc.nextLong();
        long c = sc.nextLong();
        long d = sc.nextLong();

        long cyaku = 0;
        long dyaku = 0;

        long max = b - a + 1;

        cyaku = (b / c) - ((a-1) / c);


        dyaku = (b / d) - ((a-1) / d);


        long yakusum = cyaku + dyaku;

        long lcm = lcm(c, d);
        yakusum -= (b / lcm) - ((a-1) / lcm);

        System.out.println(max - yakusum);
    }

    static long lcm (long a, long b) {
        long temp;
        long c = a;
        c *= b;
        while((temp = a%b)!=0) {
            a = b;
            b = temp;
        }
        return (c/b);
    }
}