#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <numeric>
#include <bitset>
#include <cmath>

static const int MOD = 1000000007;
using ll = long long;
using u32 = unsigned;
using u64 = unsigned long long;
using namespace std;

template<class T> constexpr T INF = ::numeric_limits<T>::max()/32*15+208;

int main() {
    vector<int> ans;
    int v[3] = {2, 3, 5};
    auto f = [&](int val, int cur, auto &&f){
        if(val > 1000000) return;
        ans.emplace_back(val);
        f(val*v[cur], cur, f);
        if(cur != 2) f(val, cur+1, f);
    };
    f(1, 0, f);
    sort(ans.begin(), ans.end());
    ans.erase(unique(ans.begin(), ans.end()), ans.end());
    int l;
    while(cin >> l, l){
        int r;
        cin >> r;
        cout << upper_bound(ans.begin(),ans.end(), r) - lower_bound(ans.begin(),ans.end(), l) << "\n";
    }
    return 0;
}
