#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; int V[33333], v_s = 0; bool prim(int a){ for(int i = 2; i * i <= a; ++i){ if(a % i == 0) return false; } return true; } int main(){ //setIO("file", "file.out"); int A, B; scanf("%d %d", &A, &B); int masc[10]; int vals[] = {2, 3, 5 ,7}, t, u, p, v; int pt = 4; for(int i = 1; i <= 9; ++i, pt <<= 2){ for(int j = 0; j < pt; ++j){ memset(masc, 0, sizeof(masc)); t = j; u = 0; while(t > 0){ masc[u] = t % 4; t >>= 2; u++; } p = 1; v = 0; for(int k = 0; k < i; ++k){ v = vals[masc[k]] * p + v; p *= 10; } if(prim(v) == true){ V[v_s++] = v; } } } int n = v_s; 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); }