#include <bits/stdc++.h>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds; //required
using namespace std;
template<typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define debug(x) cout << #x << " is " << x << endl
#define yes cout << "YES" << endl
#define no cout << "NO" << endl
typedef long long ll;
const int MOD = 1e9 + 7;

int main(){
    fast;
    vector<ll> prime = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71};
    ll a, b;
    cin >> a >> b;
    vector<ll> dp(1048578, 0), prev(1048578, 0);
    dp[0] = 1;
    vector<int> state;
    int tmp;
    for (ll i = a; i <= b; ++i){
        tmp = 0;
        for (int j = 0; j < 20; ++j){
            if (i % prime[j] == 0){
                tmp |= (1 << j);
            }
        }
        // debug(tmp);
        state.push_back(tmp);
    }
    for (ll s: state){
        for (int i = 0; i < 1048578; ++i){
            prev[i] = dp[i];
        }
        for (int i = 0; i < 1048578; ++i){
            dp[i] = prev[i];
            if ((i & s) == s){
                dp[i] += dp[i^s];
            }
            
        }
    }
    ll res = 0;
    for (int i = 0; i < 1048578; ++i){
        res += dp[i];
    }
    cout << res << endl;
    return 0;
}
#include <bits/stdc++.h>
using namespace std;

using lli = int64_t;
using ld = long double;

lli g = 10000;

lli dist(lli x1, lli y1, lli x2, lli y2)
{
    return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
}

lli bsearch(lli x, lli y, lli r, lli y1, lli l, lli h, bool fl)
{
    lli ans = LLONG_MAX;

    while (l <= h)
    {
        lli mid = l + (h - l) / 2;
        mid -= mid % g;

        if (dist(x, y, mid, y1) <= r * r)
        {
            ans = mid;

            (fl ? l : h) = mid + (fl ? g : -g);
        }
        else
            (fl ? h : l) = mid + (fl ? -g : g);
    }

    return ans;
}

lli calc(lli x, lli y, lli r, lli y1)
{
    lli rx = x;
    rx -= rx % g;

    lli mid = LLONG_MAX;

    if (dist(x, y, rx, y1) <= r * r)
        mid = rx;
    else
    if (dist(x, y, rx + g, y1) <= r * r)
        mid = rx + g;

    if (mid == LLONG_MAX) return 0;

    lli rl = x - r;
    lli rr = x + r;

    rl -= rl % g;
    rr -= rr % g;
    rr += g;

    lli l = bsearch(x, y, r, y1, rl, mid, false);
    lli h = bsearch(x, y, r, y1, mid, rr, true);

    return (h - l) / g + 1;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ld xd, yd, rd; cin >> xd >> yd >> rd;
    
    lli x = llroundl(xd * ld(g));
    lli y = llroundl(yd * ld(g));
    lli r = llroundl(rd * ld(g));

    lli ans = 0;

    for (lli y1 = y - y % g; y - y1 <= r; y1 -= g)
        ans += calc(x, y, r, y1);

    for (lli y1 = y - (y % g) + g; y1 - y <= r; y1 += g)
        ans += calc(x, y, r, y1);

    cout << ans << endl;
    return 0;
}