USACO 1.5 Superprime Rib

1 /*
2 ID: jiafeim1
3 PROG: sprime
4 LANG: C++
5 */
6 #include <iostream>
7 #include <fstream>
8 #include <algorithm>
9
10 using namespace std;
11
12 #include <cmath>
13
14
15 bool check(long num)
16 {
17 if(num%2 == 0) return false;
18 long end = std::sqrt((float)num)+1;
19 for(int i=3;i<=end;i+=2)
20 {
21 if(num%i==0) return false;
22 }
23 return true;
24 }
25 long pp[10000];
26 long top=0;
27 int l;
28
29 void work(long oldNum,int curLevel)
30 {
31 for(int i = 1;i<=9;i+=2)
32 {
33 if(check(oldNum*10+i))
34 {
35 if(curLevel == l)
36 {
37 pp[top++] = oldNum*10+i;
38 }
39 else
40 {
41 work(oldNum*10+i,curLevel+1);
42 }
43 }
44
45 }
46 }
47
48 int main()
49 {
50 ofstream fout ("sprime.out");
51 ifstream fin ("sprime.in");
52
53 fin>>l;
54 work(2,2);
55 work(3,2);
56 work(5,2);
57 work(7,2);
58
59 for(int i =0;i!=top;++i)
60 {
61 fout<<pp[i]<<endl;
62 }
63
64 fin.close();
65 fout.close();
66 return 0;
67 }
posted @ 2011-05-02 14:15  幻魇  阅读(246)  评论(0编辑  收藏  举报