本来也是很简单的题,可是调试花了我几个小时!!!问题很严重啊,那些小错误能把人气上天了,看来还要更仔细更耐心一点!代码写的不怎么样,因为很多小错误不得已用小代码改过去…………应该有改进的办法…………下面贴代码,以作纪念。

View Code
  1 /*{
  2 ID:jzy3209981
  3 PROG:pprime
  4 LANG:C++
  5 }*/
  6 #include<stdio.h>
  7 #include<iostream>
  8 #include<string.h>
  9 #include<stdlib.h>
 10 #include<math.h>
 11 using namespace std;
 12 
 13 char startl[15];
 14 char endlo[15];
 15 char palindrome[15];
 16 
 17 bool judget(int i,bool q)
 18 {
 19     int a,b;
 20     a=atol(palindrome);
 21     if(q==1)
 22     {
 23         b=atol(endlo);
 24         if(a>b)
 25             return 1;
 26         else
 27             return 0;
 28     }
 29     else
 30     {
 31         b=atol(startl);
 32         if(a<b)
 33             return 1;
 34         else
 35             return 0;
 36     }
 37 }
 38 bool judge()
 39 {    
 40     int a,i;
 41     a=atol(palindrome);
 42     for(i=2;i<=sqrt(a);i++)
 43         if(a%i==0) return false;
 44     return true;
 45 }
 46 int main()
 47 {
 48     freopen ("pprime.in","r",stdin);
 49     freopen ("pprime.out","w",stdout);
 50     int start,end,startlen,endlen,i,p,q;
 51     scanf("%d%d",&start,&end);
 52     startlen=sprintf(startl,"%d",start);
 53     endlen=sprintf(endlo,"%d",end);
 54     if(startlen==1&&endlen==1)
 55     {
 56         for(i=startlen;i<=endlen;i++)
 57             printf("%d\n",i);
 58         return 0;
 59     }
 60     else if(startlen==1)
 61         for(i=startl[0]-48;i<10;i++)
 62         {
 63             if(i==5||i==7)
 64                 printf("%d\n",i);
 65         }
 66     for(i=startlen;i<=endlen;i++)
 67     {
 68         if(i==1)
 69             continue;
 70         p=0;
 71         q=i-1;
 72         memset(palindrome,0,sizeof(palindrome));
 73         palindrome[q+1]=NULL;
 74         palindrome[p]='1';
 75         palindrome[q]='1';
 76         while(p+1<=q-1)
 77         {
 78             p++;
 79             q--;
 80             palindrome[p]='0';
 81             palindrome[q]='0';
 82         }
 83         if(i==startlen)
 84         {
 85             if(!judget(i,0)&&judge())
 86                 printf("%s\n",palindrome);
 87         }
 88         else if(i==endlen)
 89         {
 90             if(!judget(i,1)&&judge())
 91                 printf("%s\n",palindrome);
 92         }
 93         else
 94         {
 95             if(judge())
 96                 printf("%s\n",palindrome);
 97         }            
 98         while(1)
 99         {
100             if(p==q)
101                 palindrome[p]++;
102             else
103             {
104                 palindrome[p]++;
105                 palindrome[q]++;
106             }
107             if(palindrome[p]==58)
108             {
109                 if(p-1>0)
110                 {
111                     palindrome[p-1]++;
112                     palindrome[q+1]++;
113                     if(palindrome[p-1]==58)
114                     {
115                         if(p-2>0)
116                         {
117                             palindrome[p-2]++;
118                             palindrome[q+2]++;                
119                             if(palindrome[p-2]==58)
120                             {
121                                 palindrome[0]+=2;
122                                 palindrome[i-1]+=2;
123                                 palindrome[p-2]='0';
124                                 palindrome[q+2]='0';                                
125                             }
126                             palindrome[p-1]='0';
127                             palindrome[q+1]='0';
128                             palindrome[p]='0';
129                             palindrome[q]='0';
130                         }
131                         else
132                         {
133                             palindrome[p-2]+=2;
134                             palindrome[q+2]+=2;
135                             palindrome[p-1]='0';
136                             palindrome[q+1]='0';
137                             palindrome[p]='0';
138                             palindrome[q]='0';
139                         }
140                     }
141                     else
142                     {
143                         palindrome[p]='0';
144                         palindrome[q]='0';
145                     }
146                 }
147                 else if(p-1==0)
148                 {
149                     palindrome[0]+=2;
150                     palindrome[i-1]+=2;
151                     palindrome[p]='0';
152                     palindrome[q]='0';
153                 }
154                 else
155                 {
156                     palindrome[0]+=2;
157                     palindrome[i-1]+=2;
158                 }
159             }
160             if(palindrome[0]>58)
161                 break;
162             if(i==endlen&&judget(i,1))
163                 break;
164             else if(i==startlen&&judget(i,0))
165                 continue;
166         
167             if(judge())
168                 printf("%s\n",palindrome);
169         }
170     }
171 
172     return 0;
173 }

 

posted on 2012-07-15 10:36  醉春雨  阅读(141)  评论(0)    收藏  举报