写入9902099 9902100,输出9902099这个点在本地输出不了。。。不知道哪错了,其他点都能过```c #include<stdio.h> #include #include<string.h> #include<math.h> using namespace std; int main() {
unsigned long long int a[100000]={0},c[100000]={0},e,b,n=0,i,j,q,isprime,w=0;
int max=10000;
scanf("%lld %lld",&e,&b);
int d1,d2,d3,d4;
if(e<10) {
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数.一个位
if(d1>b){
break;
}
c[n++] = d1;//(处理回文数...)到时候循环判断的条件就是<n
}
}
if(e<100){
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数.两个位
if( 10*d1 + d1>b){
break;
}
c[n++] = 10*d1 + d1;//(处理回文数...)到时候循环判断的条件就是<n
}
}
if(e<1000){
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数。三个位
for (d2 = 0; d2 <= 9; d2++) {
if(d1*100+d2*10+d1>b){
break;
}
c[n++] = d1*100+d2*10+d1;//(处理回文数...)到时候循环判断的条件就是<n
} if(d1*100+d2*10+d1>=b){
break;
}
}
}
if(e<10000){
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数。四个位
for (d2 = 0; d2 <= 9; d2++) {
if(d1*1000+d2*100+d2*10+d1>b){
break;
}
c[n++] = d1*1000+d2*100+d2*10+d1;//(处理回文数...)到时候循环判断的条件就是<n
}if(d1*1000+d2*100+d2*10+d1>b){
break;
}
}
}
if(e<100000){
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数.五个位
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
if(10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1>b){
break;
}
c[n++] = 10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;//(处理回文数...)到时候循环判断的条件就是<n
}if(10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1>b){
break;
}
}if(10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1>b){
break;
}
}
}
if(e<1000000){
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数.六个位
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
if( 100000*d1 + 10000*d2 +1000*d3+100*d3 + 10*d2 + d1>b){
break;
}
c[n++] = 100000*d1 + 10000*d2 +1000*d3+100*d3 + 10*d2 + d1;//(处理回文数...)到时候循环判断的条件就是<n
}if( 100000*d1 + 10000*d2 +1000*d3+100*d3 + 10*d2 + d1>b){
break;
}
}if( 100000*d1 + 10000*d2 +1000*d3+100*d3 + 10*d2 + d1>b){
break;
}
} } if(e<10000000){
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数.七个位
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
for(d4=0;d4<=9;d4++){
if(1000000*d1 + 100000*d2 +10000*d3+1000*d4 +d3*100+ 10*d2 + d1>b){
break;
}
c[n++] = 1000000*d1 + 100000*d2 +10000*d3+1000*d4 +d3*100+ 10*d2 + d1;//(处理回文数...)到时候循环判断的条件就是<n
}if(1000000*d1 + 100000*d2 +10000*d3+1000*d4 +d3*100+ 10*d2 + d1>b){
break;
}
}if(1000000*d1 + 100000*d2 +10000*d3+1000*d4 +d3*100+ 10*d2 + d1>b){
break;
}
}if(1000000*d1 + 100000*d2 +10000*d3+1000*d4 +d3*100+ 10*d2 + d1>b){
break;
}
}
} if(e<100000000){
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数.八个位
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
for(d4=0;d4<=9;d4++){
if(10000000*d1 + 1000000*d2 +100000*d3+10000*d4 +1000*d4+d3*100+ 10*d2 + d1>b){
break;
}
c[n++] = 10000000*d1 + 1000000*d2 +100000*d3+10000*d4 +1000*d4+d3*100+ 10*d2 + d1;//(处理回文数...)到时候循环判断的条件就是<n
}if(10000000*d1 + 1000000*d2 +100000*d3+10000*d4 +1000*d4+d3*100+ 10*d2 + d1>b){
break;
}
}if(10000000*d1 + 1000000*d2 +100000*d3+10000*d4 +1000*d4+d3*100+ 10*d2 + d1>b){
break;
}
}if(10000000*d1 + 1000000*d2 +100000*d3+10000*d4 +1000*d4+d3*100+ 10*d2 + d1>b){
break;
}
}
}
for(i=0;i<n;i++){//判断质数并存起来
if(c[i]<e){
continue;
}
j=c[i];
isprime=1;
for(q=2;q<=sqrt(j);q++){
if(j%q==0){
isprime=0;
break;
}
}
if(isprime){
a[w++]=j;
}
}
q=w;
for(i=0;i<q;i++){
printf("%lld\n",a[i]);
}
return 0;
}