#include <bits/stdc++.h>
#define MAXN 10000010
#define STIZE(x) printf("STIZE%d\n", x)
using namespace std;
int mindel[MAXN], a, b;
long long rez;
void sieve(int B) {
    for (int i = 2; i <= B; i++) {
        if (!mindel[i]) {
            mindel[i] = i;
            if (i<=sqrt(B)+1)
                for (int j=i*i;j<=B;j+=i)
                    if(!mindel[j])
                        mindel[j]= i;
        }
    }
}
long long zbir(int base, int stepen) {
    long long rez = 1;
    for(int i = 0; i < stepen; i++) {
        rez = base*rez + 1;
    }
    return rez;
}
long long zbirDelilaca(int n) {
    int poc = n;
    long long rez = 1;
    int curMinDel = mindel[n];
    int cnt = 0;
    while(n > 1) {
        if(curMinDel != mindel[n]) {
            rez *= zbir(curMinDel, cnt);
            curMinDel = mindel[n];
            cnt = 0;
        }
        n /= mindel[n];
        cnt++;
    }
    rez *= zbir(curMinDel, cnt);
    return rez - poc;
}

int main() {
    scanf("%d%d", &a, &b);
    sieve(b);
    for(int i = a; i <= b; i++) {
        rez += abs(i - zbirDelilaca(i));
    }
    printf("%lld", rez);
    return 0;
}
