#include #include #include using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define ABS(a) ((a) < (0) ? (-(a)) : (a)) void setIO(const char * in = NULL, const char * out = NULL); vector V; bool prim(int a){ for(int i = 2; i * i <= a; ++i){ if(a % i == 0) return false; } return true; } int mod4(int a){ return (a & 3); } vector R[15]; int main(){ //setIO("file", "file.out"); int A, B; scanf("%d %d", &A, &B); int vals[] = {2, 3, 5 ,7}; for(int i = 0; i < 4; ++i){ R[1].push_back(vals[i]); V.push_back(vals[i]); } int zc[20]; zc[0] = 1; for(int i = 1; i < 10; ++i){ zc[i] = zc[i - 1] * 10; } for(int i = 2; i < 8; ++i){ for(int j = 0; j < 4; ++j){ int x = vals[j]; int n = R[i - 1].size(); for(int k = 0; k < n; ++k){ int to = R[i - 1][k]; int v = x * zc[i - 1] + to; if(prim(v)){ V.push_back(v); } R[i].push_back(v); } } } int n = V.size(); int p1 = n - 1; for(int i = 0; i < n; ++i){ if(V[i] >= A){ p1 = i; break; } } int p2 = n - 1; for(int i = 0; i < n; ++i){ if(V[i] >= B){ p2 = i; break; } } int ans = p2 - p1; if(B == V[p2]) ans++; printf("%d", ans); return 0; } void setIO(const char * in, const char * out){ if(in != NULL) freopen(in, "r", stdin); if(out != NULL) freopen(out, "w", stdout); }