3292

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