某古寺的一块石碑上依稀刻有一些三位与四位的神秘自然数。
专家研究发现:这些数是素数,且从低位去掉一位,或两位......后都仍为素数,
从高位去掉一位,或两位...后也都仍为素数,
更奇妙的是,同时去掉它的最高位与最低位数字后还是素数。
因此,人们把这些神秘的素数称为金蝉素数,喻意金蝉脱壳之后仍为美丽的金蝉。
试求出石碑上的金蝉素数。
#include<iostream> #include<cmath> using namespace std; int a[401]; int main() { a[1]=2,a[2]=3,a[3]=5,a[4]=7; int u=4; for(int i=11;i<10000;i+=2) { int x=3; while(x*x<=i&&____(1)_____) x++; if(x*x<=i) continue; if(a[u]<1000) a[++u]=i; //i是素数 if(i<=100) continue; //三位及以上才行 int L=log(i)/log(10)+1; //i的位数 int t=1,s=0; for(int j=1;j<L;j++) { t*=10; int hi=____(2)______; //高j位******* int lo=____(3)______; //低L一j位******* int v=1,mid=10000; if(j==L-1)mid=lo/10;//去首去尾的中间部分 while(a[v]<=hi || a[v]<=lo) { if(a[v]==hi) s++; if(a[v]==lo) s++; if(a[v]==mid) s++; ______(4)_____; } } if(_____(5)______) cout<<i<<endl; } return 0; }