3511

1 // include file
2 #include <cstdio>
3 #include <cstdlib>
4 #include <cstring>
5 #include <cmath>
6 #include <cctype>
7 #include <ctime>
8
9 #include <iostream>
10 #include <sstream>
11 #include <fstream>
12 #include <iomanip>
13 #include <bitset>
14 #include <strstream>
15
16 #include <algorithm>
17 #include <string>
18 #include <vector>
19 #include <queue>
20 #include <set>
21 #include <list>
22 #include <functional>
23
24 using namespace std;
25
26 // typedef
27 typedef long long LL;
28 typedef unsigned long long ULL;
29
30 //
31 #define read freopen("in.txt","r",stdin)
32 #define write freopen("out.txt","w",stdout)
33 #define FORi(a,b,c) for(int i=(a);i<(b);i+=c)
34 #define FORj(a,b,c) for(int j=(a);j<(b);j+=c)
35 #define FORk(a,b,c) for(int k=(a);k<(b);k+=c)
36 #define FORp(a,b,c) for(int p=(a);p<(b);p+=c)
37 #define FORii(a,b,c) for(int ii=(a);ii<(b);ii+=c)
38 #define FORjj(a,b,c) for(int jj=(a);jj<(b);jj+=c)
39 #define FORkk(a,b,c) for(int kk=(a);kk<(b);kk+=c)
40
41 #define FF(i,a) for(int i=0;i<(a);i+++)
42 #define FFD(i,a) for(int i=(a)-1;i>=0;i--)
43 #define Z(a) (a<<1)
44 #define Y(a) (a>>1)
45
46 const double eps = 1e-6;
47 const double INFf = 1e10;
48 const int INFi = 1000000000;
49 const double Pi = acos(-1.0);
50
51 template<class T> inline T sqr(T a){return a*a;}
52 template<class T> inline T TMAX(T x,T y)
53 {
54 if(x>y) return x;
55 return y;
56 }
57 template<class T> inline T TMIN(T x,T y)
58 {
59 if(x<y) return x;
60 return y;
61 }
62 template<class T> inline void SWAP(T &x,T &y)
63 {
64 T t = x;
65 x = y;
66 y = t;
67 }
68 template<class T> inline T MMAX(T x,T y,T z)
69 {
70 return TMAX(TMAX(x,y),z);
71 }
72
73
74 // code begin
75 #define MAXN 1100
76 #define MAXM 1000010
77 int po[MAXN],top;
78 int pf[MAXN];
79 int f[MAXM]; // 是否平方和
80 int f2[MAXM]; //是否质数
81 int Ff[MAXM]; //之内一共多少个数
82 int Ff2[MAXM]; //
83 int L,U;
84
85 bool Isp(int n)
86 {
87 FORi(0,top,1)
88 {
89 if(po[i]>(int)sqrt(n+0.0)) break;
90 if(n%po[i]==0) return false;
91 }
92 return true;
93 }
94 int main()
95 {
96 read;
97 write;
98 memset(pf,0,sizeof(pf));
99 FORi(2,MAXM/2,1)
100 {
101 if(!pf[i])
102 {
103 FORj(i+i,MAXM,i)
104 {
105 pf[j]=true;
106 }
107 }
108 }
109
110 memset(Ff2,0,sizeof(Ff2));
111 Ff2[2] = 1;
112 FORi(3,MAXM,1)
113 {
114 Ff2[i] = Ff2[i-1];
115 if(!pf[i])
116 Ff2[i]++;
117 }
118
119 //
120
121 memset(f,0,sizeof(f));
122 FORi(1,MAXN,1)
123 {
124 FORj(1,MAXN,1)
125 {
126 if(i*i+j*j<MAXM)
127 f[i*i+j*j]=1;
128 }
129 }
130 memset(Ff,0,sizeof(Ff));
131 Ff[2] = 1;
132 FORi(3,MAXM,1)
133 {
134 Ff[i] = Ff[i-1];
135 if(f[i]&&Ff2[i]-Ff2[i-1]==1)
136 Ff[i]++;
137 }
138
139 while(scanf("%d %d",&L,&U)!=-1)
140 {
141 if(L==-1&&U==-1) break;
142 if(L<=1 && U<=1)
143 {
144 printf("%d %d 0 0\n",L,U);
145 continue;
146 }
147 if(L>U) SWAP(L,U);
148 int ans1 = 0,ans2 = 0;
149 printf("%d %d",L,U);
150 if(L<=1) L=2;
151 ans1 = Ff2[U]-Ff2[L-1];
152 ans2 = Ff[U]-Ff[L-1];
153 printf(" %d %d\n",ans1,ans2);
154 }
155 return 0;
156 }
posted @ 2011-03-08 13:12  AC2012  阅读(213)  评论(0编辑  收藏  举报