from math import gcd,ceil
a,b,c,d=map(int,input().split())
if c==0 or d==0:
if b>0 and a<0:
print(1)
else:
print(0)
else:
c=abs(c)
d=abs(d)
l=abs(c*d)//gcd(c,d)
ans=0
if a>0 and b>0:
ans+=(b//c)-ceil(a/c)+1
ans+=(b//d)-ceil(a/d)+1
ans-=(b//l)-ceil(a/l)+1
if b>0 and a<0:
ans+=(b//c)+abs(a)//c+1
ans+=(b//d)+abs(a)//d+1
ans-=(b//l)+abs(a)//l+1
if a<0 and b<0:
ans+=(abs(a)//c)-ceil(abs(b)/c)+1
ans+=(abs(a)//d)-ceil(abs(b)/d)+1
ans-=(abs(a)//l)-ceil(abs(b)/l)+1
if a<0 and b==0:
ans+=(abs(a)//c)+1
ans+=(abs(a)//d)+1
ans-=(abs(a)//l)+1
if a==0 and b>0:
ans+=(b//c)+1
ans+=(b//d)+1
ans-=(b//l)+1
print(ans)
感謝,看懂了,這就是我沒考慮到的條件
只有 0 可以是 0 的倍數,0 無論乘上多少都是 0,不會變成其他數字
故 0 的倍數只有一個,那就是 0