c语言的回文质数,我做的时间老是超时,算法不好,求解优秀算法!
【USACO1.5.2】回文质数
Time Limit:10000MS Memory Limit:65536K
Total Submit:79 Accepted:11?
Case Time Limit:1000MS?
Description?
因为151即是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 号是回文质数。写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)间的所有回文质数。
Input?
第 1 行: 二个整数 a 和 b .?
Output?
输出一个回文质数的列表,一行一个。?
Sample Input?
5 500
Sample Output?
5
7
11
101
131
151
181
191
313
353
373
383
Source?
我的源代码:
#include<stdio.h>#include<math.h>#include<string.h> void main(){ int chuli(long); long m,k,d,n; long i; scanf("%d%d",&n,&m); for(i=n;i<=m;i++){ k=sqrt(i); for(d=2;d<=k;d++){ if(i%d==0) break; } if(d>k){ if(chuli(i)==1) printf("%d\n",i); } }}int chuli(long z){ long i=0,j; int arr[100]; while(z){ arr[i]=z%10; z=z/10; i++; } for(j=0;j<i/2;j++) { if(arr[j]!=arr[i-j-1]) return 0; } return 1;}