import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		Scanner stdIn=new Scanner(System.in);
		long A=stdIn.nextLong();
		long B=stdIn.nextLong();
		long C=stdIn.nextLong();
		long D=stdIn.nextLong();
		long ans=B-A+1,hoge=0,hoge2=0,hoge3=0;
		if(A>C)
			hoge=(A/C)*C;
		else
			hoge=0;
		if(A%C==0&&A>C)
			hoge-=C;
		if(B>C)
			hoge2=(B/C+1)*C;
		else
			hoge2=C;
		if(C==B)
			hoge2+=C;
		ans-=(hoge2-hoge)/C;ans++;
		//kireme
		if(A>D)
			hoge=(A/D)*D;
		else
			hoge=0;
		if(A%D==0&&A>D)
			hoge-=D;
		if(B>D)
			hoge2=(B/D+1)*D;
		else
			hoge2=D;
		if(D==B)
			hoge2+=D;
		ans-=(hoge2-hoge)/D;ans++;
		//kireme2
		hoge=C;hoge2=D;
		while(hoge%hoge2!=0){
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		}
		hoge3=(C*D)/hoge2;
		if(A>hoge3)
			hoge=(A/hoge3)*hoge3;
		else
			hoge=0;
		if(A%hoge3==0&&A>hoge3)
			hoge-=hoge3;
		if(B>C)
			hoge2=(B/hoge3+1)*hoge3;
		else
			hoge2=hoge3;
		if(hoge3==B)
			hoge2+=hoge3;
		ans+=(hoge2-hoge)/hoge3;ans--;
		System.out.println(ans);
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args){
		Scanner stdIn=new Scanner(System.in);
		long A=stdIn.nextLong();
		long B=stdIn.nextLong();
		long C=stdIn.nextLong();
		long D=stdIn.nextLong();
		long ans=B-A+1,hoge=0,hoge2=0,hoge3=0;
		if(A>C)
			hoge=(A/C)*C;
		else
			hoge=0;
		if(A%C==0&&A>C)
			hoge-=C;
		if(B>C)
			hoge2=(B/C+1)*C;
		else
			hoge2=C;
		if(C==B)
			hoge2+=C;
		ans-=(hoge2-hoge)/C;ans++;
		//kireme
		if(A>D)
			hoge=(A/D)*D;
		else
			hoge=0;
		if(A%D==0&&A>D)
			hoge-=D;
		if(B>D)
			hoge2=(B/D+1)*D;
		else
			hoge2=D;
		if(D==B)
			hoge2+=D;
		ans-=(hoge2-hoge)/D;ans++;
		//kireme2
		hoge=C;hoge2=D;
		while(hoge%hoge2!=0){
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		}
		hoge3=(C*D)/hoge2;
		if(A>hoge3)
			hoge=(A/hoge3)*hoge3;
		else
			hoge=0;
		if(A%hoge3==0&&A>hoge3)
			hoge-=hoge3;
		if(B>C)
			hoge2=(B/hoge3+1)*hoge3;
		else
			hoge2=hoge3;
		if(hoge3==B)
			hoge2+=hoge3;
		ans+=(hoge2-hoge)/hoge3;ans--;
		System.out.println(ans);
	}
} Main public static void main(String[] args){
		Scanner stdIn=new Scanner(System.in);
		long A=stdIn.nextLong();
		long B=stdIn.nextLong();
		long C=stdIn.nextLong();
		long D=stdIn.nextLong();
		long ans=B-A+1,hoge=0,hoge2=0,hoge3=0;
		if(A>C)
			hoge=(A/C)*C;
		else
			hoge=0;
		if(A%C==0&&A>C)
			hoge-=C;
		if(B>C)
			hoge2=(B/C+1)*C;
		else
			hoge2=C;
		if(C==B)
			hoge2+=C;
		ans-=(hoge2-hoge)/C;ans++;
		//kireme
		if(A>D)
			hoge=(A/D)*D;
		else
			hoge=0;
		if(A%D==0&&A>D)
			hoge-=D;
		if(B>D)
			hoge2=(B/D+1)*D;
		else
			hoge2=D;
		if(D==B)
			hoge2+=D;
		ans-=(hoge2-hoge)/D;ans++;
		//kireme2
		hoge=C;hoge2=D;
		while(hoge%hoge2!=0){
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		}
		hoge3=(C*D)/hoge2;
		if(A>hoge3)
			hoge=(A/hoge3)*hoge3;
		else
			hoge=0;
		if(A%hoge3==0&&A>hoge3)
			hoge-=hoge3;
		if(B>C)
			hoge2=(B/hoge3+1)*hoge3;
		else
			hoge2=hoge3;
		if(hoge3==B)
			hoge2+=hoge3;
		ans+=(hoge2-hoge)/hoge3;ans--;
		System.out.println(ans);
	} main {
		Scanner stdIn=new Scanner(System.in);
		long A=stdIn.nextLong();
		long B=stdIn.nextLong();
		long C=stdIn.nextLong();
		long D=stdIn.nextLong();
		long ans=B-A+1,hoge=0,hoge2=0,hoge3=0;
		if(A>C)
			hoge=(A/C)*C;
		else
			hoge=0;
		if(A%C==0&&A>C)
			hoge-=C;
		if(B>C)
			hoge2=(B/C+1)*C;
		else
			hoge2=C;
		if(C==B)
			hoge2+=C;
		ans-=(hoge2-hoge)/C;ans++;
		//kireme
		if(A>D)
			hoge=(A/D)*D;
		else
			hoge=0;
		if(A%D==0&&A>D)
			hoge-=D;
		if(B>D)
			hoge2=(B/D+1)*D;
		else
			hoge2=D;
		if(D==B)
			hoge2+=D;
		ans-=(hoge2-hoge)/D;ans++;
		//kireme2
		hoge=C;hoge2=D;
		while(hoge%hoge2!=0){
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		}
		hoge3=(C*D)/hoge2;
		if(A>hoge3)
			hoge=(A/hoge3)*hoge3;
		else
			hoge=0;
		if(A%hoge3==0&&A>hoge3)
			hoge-=hoge3;
		if(B>C)
			hoge2=(B/hoge3+1)*hoge3;
		else
			hoge2=hoge3;
		if(hoge3==B)
			hoge2+=hoge3;
		ans+=(hoge2-hoge)/hoge3;ans--;
		System.out.println(ans);
	} Scanner stdIn=new Scanner(System.in); stdIn new Scanner(System.in) long A=stdIn.nextLong(); A stdIn.nextLong() stdIn.nextLong stdIn long B=stdIn.nextLong(); B stdIn.nextLong() stdIn.nextLong stdIn long C=stdIn.nextLong(); C stdIn.nextLong() stdIn.nextLong stdIn long D=stdIn.nextLong(); D stdIn.nextLong() stdIn.nextLong stdIn long ans=B-A+1 ans B-A+1 B-A B A 1 hoge=0 hoge 0 hoge2=0 hoge2 0 hoge3=0; hoge3 0 if(A>C)
			hoge=(A/C)*C;
		else
			hoge=0; A>C A C hoge=(A/C)*C hoge (A/C)*C (A/C) A C C hoge=0 hoge 0 if(A%C==0&&A>C)
			hoge-=C; A%C==0&&A>C A%C==0 A%C A C 0 A>C A C hoge-=C hoge C if(B>C)
			hoge2=(B/C+1)*C;
		else
			hoge2=C; B>C B C hoge2=(B/C+1)*C hoge2 (B/C+1)*C (B/C+1) B/C B C 1 C hoge2=C hoge2 C if(C==B)
			hoge2+=C; C==B C B hoge2+=C hoge2 C ans-=(hoge2-hoge)/C ans (hoge2-hoge)/C (hoge2-hoge) hoge2 hoge C ans++ ans if(A>D)
			hoge=(A/D)*D;
		else
			hoge=0; A>D A D hoge=(A/D)*D hoge (A/D)*D (A/D) A D D hoge=0 hoge 0 if(A%D==0&&A>D)
			hoge-=D; A%D==0&&A>D A%D==0 A%D A D 0 A>D A D hoge-=D hoge D if(B>D)
			hoge2=(B/D+1)*D;
		else
			hoge2=D; B>D B D hoge2=(B/D+1)*D hoge2 (B/D+1)*D (B/D+1) B/D B D 1 D hoge2=D hoge2 D if(D==B)
			hoge2+=D; D==B D B hoge2+=D hoge2 D ans-=(hoge2-hoge)/D ans (hoge2-hoge)/D (hoge2-hoge) hoge2 hoge D ans++ ans hoge=C hoge C hoge2=D hoge2 D while(hoge%hoge2!=0){
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		} hoge%hoge2!=0 hoge%hoge2 hoge hoge2 0 {
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		} hoge3=hoge%hoge2 hoge3 hoge%hoge2 hoge hoge2 hoge=hoge2 hoge hoge2 hoge2=hoge3 hoge2 hoge3 hoge3=(C*D)/hoge2 hoge3 (C*D)/hoge2 (C*D) C D hoge2 if(A>hoge3)
			hoge=(A/hoge3)*hoge3;
		else
			hoge=0; A>hoge3 A hoge3 hoge=(A/hoge3)*hoge3 hoge (A/hoge3)*hoge3 (A/hoge3) A hoge3 hoge3 hoge=0 hoge 0 if(A%hoge3==0&&A>hoge3)
			hoge-=hoge3; A%hoge3==0&&A>hoge3 A%hoge3==0 A%hoge3 A hoge3 0 A>hoge3 A hoge3 hoge-=hoge3 hoge hoge3 if(B>C)
			hoge2=(B/hoge3+1)*hoge3;
		else
			hoge2=hoge3; B>C B C hoge2=(B/hoge3+1)*hoge3 hoge2 (B/hoge3+1)*hoge3 (B/hoge3+1) B/hoge3 B hoge3 1 hoge3 hoge2=hoge3 hoge2 hoge3 if(hoge3==B)
			hoge2+=hoge3; hoge3==B hoge3 B hoge2+=hoge3 hoge2 hoge3 ans+=(hoge2-hoge)/hoge3 ans (hoge2-hoge)/hoge3 (hoge2-hoge) hoge2 hoge hoge3 ans-- ans System.out.println(ans) System.out.println System.out System System.out ans String[] args args public class Main {
	public static void main(String[] args){
		Scanner stdIn=new Scanner(System.in);
		long A=stdIn.nextLong();
		long B=stdIn.nextLong();
		long C=stdIn.nextLong();
		long D=stdIn.nextLong();
		long ans=B-A+1,hoge=0,hoge2=0,hoge3=0;
		if(A>C)
			hoge=(A/C)*C;
		else
			hoge=0;
		if(A%C==0&&A>C)
			hoge-=C;
		if(B>C)
			hoge2=(B/C+1)*C;
		else
			hoge2=C;
		if(C==B)
			hoge2+=C;
		ans-=(hoge2-hoge)/C;ans++;
		//kireme
		if(A>D)
			hoge=(A/D)*D;
		else
			hoge=0;
		if(A%D==0&&A>D)
			hoge-=D;
		if(B>D)
			hoge2=(B/D+1)*D;
		else
			hoge2=D;
		if(D==B)
			hoge2+=D;
		ans-=(hoge2-hoge)/D;ans++;
		//kireme2
		hoge=C;hoge2=D;
		while(hoge%hoge2!=0){
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		}
		hoge3=(C*D)/hoge2;
		if(A>hoge3)
			hoge=(A/hoge3)*hoge3;
		else
			hoge=0;
		if(A%hoge3==0&&A>hoge3)
			hoge-=hoge3;
		if(B>C)
			hoge2=(B/hoge3+1)*hoge3;
		else
			hoge2=hoge3;
		if(hoge3==B)
			hoge2+=hoge3;
		ans+=(hoge2-hoge)/hoge3;ans--;
		System.out.println(ans);
	}
} public class Main {
	public static void main(String[] args){
		Scanner stdIn=new Scanner(System.in);
		long A=stdIn.nextLong();
		long B=stdIn.nextLong();
		long C=stdIn.nextLong();
		long D=stdIn.nextLong();
		long ans=B-A+1,hoge=0,hoge2=0,hoge3=0;
		if(A>C)
			hoge=(A/C)*C;
		else
			hoge=0;
		if(A%C==0&&A>C)
			hoge-=C;
		if(B>C)
			hoge2=(B/C+1)*C;
		else
			hoge2=C;
		if(C==B)
			hoge2+=C;
		ans-=(hoge2-hoge)/C;ans++;
		//kireme
		if(A>D)
			hoge=(A/D)*D;
		else
			hoge=0;
		if(A%D==0&&A>D)
			hoge-=D;
		if(B>D)
			hoge2=(B/D+1)*D;
		else
			hoge2=D;
		if(D==B)
			hoge2+=D;
		ans-=(hoge2-hoge)/D;ans++;
		//kireme2
		hoge=C;hoge2=D;
		while(hoge%hoge2!=0){
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		}
		hoge3=(C*D)/hoge2;
		if(A>hoge3)
			hoge=(A/hoge3)*hoge3;
		else
			hoge=0;
		if(A%hoge3==0&&A>hoge3)
			hoge-=hoge3;
		if(B>C)
			hoge2=(B/hoge3+1)*hoge3;
		else
			hoge2=hoge3;
		if(hoge3==B)
			hoge2+=hoge3;
		ans+=(hoge2-hoge)/hoge3;ans--;
		System.out.println(ans);
	}
} Main
import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		Scanner stdIn=new Scanner(System.in);
		long A=stdIn.nextLong();
		long B=stdIn.nextLong();
		long C=stdIn.nextLong();
		long D=stdIn.nextLong();
		long ans=B-A+1,hoge=0,hoge2=0,hoge3=0;
		if(A>C)
			hoge=(A/C)*C;
		else
			hoge=0;
		if(A%C==0&&A>C)
			hoge-=C;
		if(B>C)
			hoge2=(B/C+1)*C;
		else
			hoge2=C;
		if(C==B)
			hoge2+=C;
		ans-=(hoge2-hoge)/C;ans++;
		//kireme
		if(A>D)
			hoge=(A/D)*D;
		else
			hoge=0;
		if(A%D==0&&A>D)
			hoge-=D;
		if(B>D)
			hoge2=(B/D+1)*D;
		else
			hoge2=D;
		if(D==B)
			hoge2+=D;
		ans-=(hoge2-hoge)/D;ans++;
		//kireme2
		hoge=C;hoge2=D;
		while(hoge%hoge2!=0){
			hoge3=hoge%hoge2;
			hoge=hoge2;
			hoge2=hoge3;
		}
		hoge3=(C*D)/hoge2;
		if(A>hoge3)
			hoge=(A/hoge3)*hoge3;
		else
			hoge=0;
		if(A%hoge3==0&&A>hoge3)
			hoge-=hoge3;
		if(B>C)
			hoge2=(B/hoge3+1)*hoge3;
		else
			hoge2=hoge3;
		if(hoge3==B)
			hoge2+=hoge3;
		ans+=(hoge2-hoge)/hoge3;ans--;
		System.out.println(ans);
	}
}