OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / lib / bitvector / t / 05_____primes.t
1 #!perl -w
2
3 use strict;
4 no strict "vars";
5
6 use Bit::Vector;
7
8 # ======================================================================
9 #   $set = new Bit::Vector($elements);
10 #   $set->Fill();
11 #   $set->Empty();
12 #   $set->Primes();
13 #   $set->Bit_Off($i);
14 #   $set->Bit_On($i);
15 #   $set->bit_flip($i);
16 #   $set->contains($i);
17 #   $set->Norm();
18 #   $set1->equal($set2);
19 # ======================================================================
20
21 $limit = 1000;
22
23 print "1..", ($limit+4)*2, "\n";
24
25 @prime = (0) x ($limit+1);
26
27 $prime[2] = 1;
28 $prime[3] = 1;
29 $prime[5] = 1;
30 $prime[7] = 1;
31 $prime[11] = 1;
32 $prime[13] = 1;
33 $prime[17] = 1;
34 $prime[19] = 1;
35 $prime[23] = 1;
36 $prime[29] = 1;
37 $prime[31] = 1;
38 $prime[37] = 1;
39 $prime[41] = 1;
40 $prime[43] = 1;
41 $prime[47] = 1;
42 $prime[53] = 1;
43 $prime[59] = 1;
44 $prime[61] = 1;
45 $prime[67] = 1;
46 $prime[71] = 1;
47 $prime[73] = 1;
48 $prime[79] = 1;
49 $prime[83] = 1;
50 $prime[89] = 1;
51 $prime[97] = 1;
52 $prime[101] = 1;
53 $prime[103] = 1;
54 $prime[107] = 1;
55 $prime[109] = 1;
56 $prime[113] = 1;
57 $prime[127] = 1;
58 $prime[131] = 1;
59 $prime[137] = 1;
60 $prime[139] = 1;
61 $prime[149] = 1;
62 $prime[151] = 1;
63 $prime[157] = 1;
64 $prime[163] = 1;
65 $prime[167] = 1;
66 $prime[173] = 1;
67 $prime[179] = 1;
68 $prime[181] = 1;
69 $prime[191] = 1;
70 $prime[193] = 1;
71 $prime[197] = 1;
72 $prime[199] = 1;
73 $prime[211] = 1;
74 $prime[223] = 1;
75 $prime[227] = 1;
76 $prime[229] = 1;
77 $prime[233] = 1;
78 $prime[239] = 1;
79 $prime[241] = 1;
80 $prime[251] = 1;
81 $prime[257] = 1;
82 $prime[263] = 1;
83 $prime[269] = 1;
84 $prime[271] = 1;
85 $prime[277] = 1;
86 $prime[281] = 1;
87 $prime[283] = 1;
88 $prime[293] = 1;
89 $prime[307] = 1;
90 $prime[311] = 1;
91 $prime[313] = 1;
92 $prime[317] = 1;
93 $prime[331] = 1;
94 $prime[337] = 1;
95 $prime[347] = 1;
96 $prime[349] = 1;
97 $prime[353] = 1;
98 $prime[359] = 1;
99 $prime[367] = 1;
100 $prime[373] = 1;
101 $prime[379] = 1;
102 $prime[383] = 1;
103 $prime[389] = 1;
104 $prime[397] = 1;
105 $prime[401] = 1;
106 $prime[409] = 1;
107 $prime[419] = 1;
108 $prime[421] = 1;
109 $prime[431] = 1;
110 $prime[433] = 1;
111 $prime[439] = 1;
112 $prime[443] = 1;
113 $prime[449] = 1;
114 $prime[457] = 1;
115 $prime[461] = 1;
116 $prime[463] = 1;
117 $prime[467] = 1;
118 $prime[479] = 1;
119 $prime[487] = 1;
120 $prime[491] = 1;
121 $prime[499] = 1;
122 $prime[503] = 1;
123 $prime[509] = 1;
124 $prime[521] = 1;
125 $prime[523] = 1;
126 $prime[541] = 1;
127 $prime[547] = 1;
128 $prime[557] = 1;
129 $prime[563] = 1;
130 $prime[569] = 1;
131 $prime[571] = 1;
132 $prime[577] = 1;
133 $prime[587] = 1;
134 $prime[593] = 1;
135 $prime[599] = 1;
136 $prime[601] = 1;
137 $prime[607] = 1;
138 $prime[613] = 1;
139 $prime[617] = 1;
140 $prime[619] = 1;
141 $prime[631] = 1;
142 $prime[641] = 1;
143 $prime[643] = 1;
144 $prime[647] = 1;
145 $prime[653] = 1;
146 $prime[659] = 1;
147 $prime[661] = 1;
148 $prime[673] = 1;
149 $prime[677] = 1;
150 $prime[683] = 1;
151 $prime[691] = 1;
152 $prime[701] = 1;
153 $prime[709] = 1;
154 $prime[719] = 1;
155 $prime[727] = 1;
156 $prime[733] = 1;
157 $prime[739] = 1;
158 $prime[743] = 1;
159 $prime[751] = 1;
160 $prime[757] = 1;
161 $prime[761] = 1;
162 $prime[769] = 1;
163 $prime[773] = 1;
164 $prime[787] = 1;
165 $prime[797] = 1;
166 $prime[809] = 1;
167 $prime[811] = 1;
168 $prime[821] = 1;
169 $prime[823] = 1;
170 $prime[827] = 1;
171 $prime[829] = 1;
172 $prime[839] = 1;
173 $prime[853] = 1;
174 $prime[857] = 1;
175 $prime[859] = 1;
176 $prime[863] = 1;
177 $prime[877] = 1;
178 $prime[881] = 1;
179 $prime[883] = 1;
180 $prime[887] = 1;
181 $prime[907] = 1;
182 $prime[911] = 1;
183 $prime[919] = 1;
184 $prime[929] = 1;
185 $prime[937] = 1;
186 $prime[941] = 1;
187 $prime[947] = 1;
188 $prime[953] = 1;
189 $prime[967] = 1;
190 $prime[971] = 1;
191 $prime[977] = 1;
192 $prime[983] = 1;
193 $prime[991] = 1;
194 $prime[997] = 1;
195
196 $set1 = new Bit::Vector($limit+1);
197 $set2 = new Bit::Vector($limit+1);
198 $set3 = new Bit::Vector($limit+1);
199
200 $set1->Fill();
201 $set2->Empty();
202 $set3->Primes();
203
204 $set1->Bit_Off(0);
205 $set1->Bit_Off(1);
206 $set2->Bit_On(0);
207 $set2->Bit_On(1);
208
209 for ( $j = 4; $j <= $limit; $j += 2 )
210 {
211     $set1->Bit_Off($j);
212     $set2->Bit_On($j);
213 }
214
215 for ( $i = 3; ($j = $i * $i) <= $limit; $i += 2 )
216 {
217     for ( ; $j <= $limit; $j += $i )
218     {
219         $set1->Bit_Off($j);
220         $set2->Bit_On($j);
221     }
222 }
223
224 $n = 1;
225 for ( $i = 0; $i <= $limit; ++$i )
226 {
227     if ($set1->contains($i) == $prime[$i])
228     {print "ok $n\n";} else {print "not ok $n\n";}
229     $n++;
230     if ($set2->bit_flip($i) == $prime[$i])
231     {print "ok $n\n";} else {print "not ok $n\n";}
232     $n++;
233 }
234
235 if ($set1->Norm() == 168)
236 {print "ok $n\n";} else {print "not ok $n\n";}
237 $n++;
238
239 if ($set2->Norm() == 168)
240 {print "ok $n\n";} else {print "not ok $n\n";}
241 $n++;
242
243 if ($set3->Norm() == 168)
244 {print "ok $n\n";} else {print "not ok $n\n";}
245 $n++;
246
247 if ($set1->equal($set2))
248 {print "ok $n\n";} else {print "not ok $n\n";}
249 $n++;
250
251 if ($set1->equal($set3))
252 {print "ok $n\n";} else {print "not ok $n\n";}
253 $n++;
254
255 if ($set2->equal($set3))
256 {print "ok $n\n";} else {print "not ok $n\n";}
257 $n++;
258
259 __END__
260