。。好久没写代码了 这么个东西调了半天 c++的string类很浪费内存,竟然出现过Memory Limit Exceed 只好用原始的了~ #include <iostream> #include <cmath> #include <sstream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; int plist[100000]; bool isPrime(int num) { int i; if (num%2 == 0 || num%3 ==0) return false; for (i = 5; i*i <= num; i+=2) if (num % i ==0) return false; return true; } void genP(int a, int num) { int j = 0; if(a==5) { plist[0] = 5; j++; if(num < 7) return; plist[1] = 7; j++; if(num < 11) return; plist[2] = 11; j++; if(num < 101) return; } else if(a<=7) { plist[0] = 7; j++; if(num < 11) return; plist[1] = 11; j++; if(num < 101) return; } else if(a<=11) { plist[0] = 11; j++; if(num < 101) return; } int i = 10; int Palin; char buf[20]; while(1) { memset(buf, 0, sizeof(buf)); char *p, *q; sprintf(buf, "%d", i); p = buf + strlen(buf); q = p - 1; while(q > buf) *p++ = *--q; *p = '/0'; Palin = atoi(buf); i++; if (Palin<a) continue; else if (Palin<=num ) { if(isPrime(Palin)) plist[j++]=Palin; } else break; } } int main() { int a, b; while(cin >> a >> b) { memset(plist, 0, sizeof(plist)); genP(a, b); int i = 0; while(plist[i]) { cout << plist[i] << endl; i++; } } return 0; }