//Code by Patcas Csaba #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long #define PII pair #define VB vector #define VI vector #define VD vector #define VS vector #define VPII vector > #define VVI vector < VI > #define VVB vector < VB > #define FORN(i, n) for(int i = 0; i < (n); ++i) #define FOR(i, a, b) for(int i = (a); i <= (b); ++i) #define FORD(i, a, b) for(int i = (a); i >= (b); --i) #define REPEAT do{ #define UNTIL(x) }while(!(x)); #define SZ size() #define BG begin() #define EN end() #define CL clear() #define X first #define Y second #define RS resize #define PB push_back #define MP make_pair #define ALL(x) x.begin(), x.end() #define IN_FILE "a.in" #define OUT_FILE "a.out" int a, b, sol = 0; bool isPrime(int x) { int gyok = sqrt(x); for (int i = 2; i <= gyok; ++i) { if ((x % i) == 0) { return false; } } return true; } void back(int n, int pow10, int nr3, int nr7) { if (nr3 > 1) return; if (nr7 > 1) return; if (n > b || pow10 == 1000000000) return; if (pow10 == 1) { back(2, 10, 0, 0); back(3, 10, 1, 0); back(7, 10, 0, 1); } else { if (a <= n && n <= b && isPrime(n)) { ++sol; //cerr << n << endl; } back(n * 10 + 3, pow10 * 10, nr3 + 1, nr7); back(n * 10 + 7, pow10 * 10, nr3, nr7 + 1); } } int main() { //Read data //freopen(IN_FILE, "r", stdin); //freopen(OUT_FILE, "w", stdout); cin >> a >> b; back(0, 1, 0, 0); cout << sol; //Solve //Write data return 0; }