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

浙公网安备 33010602011771号