#include <bits/stdc++.h>
using namespace std;
/*
n = a^k
En küçük a > 0 için {a, k} döndürüyor.
*/
array<int, 2> get_mask(int n) {
int init_n = n;
vector<array<int, 2>> factorization;
int g = 0;
for (int i = 2; i * i <= n; i++) {
if (n % i)
continue;
int exp = 0;
while (n % i == 0)
n /= i, exp++;
factorization.push_back({i, exp});
g = __gcd(g, exp);
}
if (n > 1) {
return {init_n, 1};
}
int mask = 1;
for (auto &[prime, exp] : factorization) {
for (int i = 0; i < exp / g; i++)
mask *= prime;
}
return {mask, g};
}
int main() {
int a1, a2, b1, b2;
cin >> a1 >> a2 >> b1 >> b2;
set<int> existing_powers[a2 + 1];
for (int a = a1; a <= a2; a++) {
auto [mask, exp] = get_mask(a);
for (int b = b1; b <= b2; b++)
existing_powers[mask].insert(exp * b);
}
int ans = 0;
for (auto &powers : existing_powers)
ans += powers.size();
cout << ans << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLyoKICAgIG4gPSBhXmsKICAgIEVuIGvDvMOnw7xrIGEgPiAwIGnDp2luIHthLCBrfSBkw7ZuZMO8csO8eW9yLgoqLwphcnJheTxpbnQsIDI+IGdldF9tYXNrKGludCBuKSB7CiAgICBpbnQgaW5pdF9uID0gbjsKICAgIHZlY3RvcjxhcnJheTxpbnQsIDI+PiBmYWN0b3JpemF0aW9uOwogICAgaW50IGcgPSAwOwogICAgZm9yIChpbnQgaSA9IDI7IGkgKiBpIDw9IG47IGkrKykgewogICAgICAgIGlmIChuICUgaSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgaW50IGV4cCA9IDA7CiAgICAgICAgd2hpbGUgKG4gJSBpID09IDApCiAgICAgICAgICAgIG4gLz0gaSwgZXhwKys7CiAgICAgICAgZmFjdG9yaXphdGlvbi5wdXNoX2JhY2soe2ksIGV4cH0pOwogICAgICAgIGcgPSBfX2djZChnLCBleHApOwogICAgfQoKICAgIGlmIChuID4gMSkgewogICAgICAgIHJldHVybiB7aW5pdF9uLCAxfTsKICAgIH0KCiAgICBpbnQgbWFzayA9IDE7CiAgICBmb3IgKGF1dG8gJltwcmltZSwgZXhwXSA6IGZhY3Rvcml6YXRpb24pIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4cCAvIGc7IGkrKykKICAgICAgICAgICAgbWFzayAqPSBwcmltZTsKICAgIH0KCiAgICByZXR1cm4ge21hc2ssIGd9Owp9CgppbnQgbWFpbigpIHsKICAgIGludCBhMSwgYTIsIGIxLCBiMjsKICAgIGNpbiA+PiBhMSA+PiBhMiA+PiBiMSA+PiBiMjsKICAgIHNldDxpbnQ+IGV4aXN0aW5nX3Bvd2Vyc1thMiArIDFdOwogICAgZm9yIChpbnQgYSA9IGExOyBhIDw9IGEyOyBhKyspIHsKICAgICAgICBhdXRvIFttYXNrLCBleHBdID0gZ2V0X21hc2soYSk7CiAgICAgICAgZm9yIChpbnQgYiA9IGIxOyBiIDw9IGIyOyBiKyspCiAgICAgICAgICAgIGV4aXN0aW5nX3Bvd2Vyc1ttYXNrXS5pbnNlcnQoZXhwICogYik7CiAgICB9CiAgICBpbnQgYW5zID0gMDsKICAgIGZvciAoYXV0byAmcG93ZXJzIDogZXhpc3RpbmdfcG93ZXJzKQogICAgICAgIGFucyArPSBwb3dlcnMuc2l6ZSgpOwogICAgY291dCA8PCBhbnMgPDwgIlxuIjsKfQ==