时间限制: 1000 ms 内存限制: 65536 KB
提交数: 31028 通过数: 12320
找出正整数M和N之间(N不小于M)的所有真素数。
真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。
例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。
输入两个数M和N,空格间隔,1<=M<=N<=100000。
按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出No。
10 35
11,13,17,31
写的比较繁索,也不知有没有简单的方法:
#include#include #include int a[100001]; int mxx(int y)//素数吗 { for(int i=2;i 10)//两位数 { if(i/10%2) if(mxx(i)) { sum=4; if(i<100&&i>10) sum=i/10+i%10*10; { a[k++]=i; } } } else if(i>100&&i<1000)//三位数 { if(i/100%2) if(mxx(i)) { sum=i%10*100+i/10%10*10+i/100; if(mxx(sum)) a[k++]=i; } } else if(i>1000&&i<10000)//四位数 { if(i/1000%2) if(mxx(i)) { sum=i%10*1000+i/10%10*100+i/100%10*10+i/1000; if(mxx(sum)) a[k++]=i; } } else if(i>10000&&i<100000)//五位数 { if(i/10000%2) if(mxx(i)) { sum=i%10*10000+i/10%10*1000+i/100%10*100+i/1000%10*10+i/10000; if(mxx(sum)) a[k++]=i; } } } if(k==0)printf("No"); else { for(i=0;i