1 条题解
-
0
C :
#include<stdio.h> #include<math.h> #define N 1500000 int a[N]; int main() { int i,j,b = 1; int m,n,t; int x,k; scanf("%d%d",&m,&n); if(n<=100) t = 100; else if(n >= 100 && n <= 1000) t = 1000; else if(n >= 1000 && n <= 10000) t = 10000; else if(n >= 10000 && n <= 100000) t = 100000; else if(n >= 100000 && n <= 1000000) t = 1000000; for(i = 0;i < t;i++) a[i] = i; a[1] = 0; for(i = 2;i < t;i++) { if(a[i]==0) continue; j = i; do { j += i; if(j >t) break; a[j] = 0; } while(j < t); } for(i = m;i <= n;i++) { if(a[i]!=0) { k = a[i]; x = 0; do { x = k%10 + x*10; k/=10; } while(k!=0); if(a[x]!=0) { if(b == 1) printf("%d",a[i]); else if(b == 10) { printf(" %d\n",a[i]); } else { printf(" %d",a[i]); } if(b == 10) b = 0; b++; } } } return 0; }C++ :
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> const int M = 1000000; bool mark[M]; void Seive() { memset(mark,1,sizeof(mark)); mark[0] = mark[1] = 0; for(int i = 2;i <= sqrt(M);i++) { if(mark[i]) { for(int j = i*i; j< M;j+=i) mark[j] = 0; } } } int Invert(int x) { int temp = 0,b = 1; char a[8]; int i = 0; while(x >= 10) { a[i] = x%10 +48; i++; x /= 10; } a[i] = x + 48; a[++i] = '\0'; temp = atoi(a); return temp; } int main() { Seive(); int m,n,temp,conter = 0; scanf("%d %d",&m,&n); for(int i = m;i <= n;i++) { if(mark[i]) { temp = Invert(i); if(mark[temp]) { conter++; printf("%d",i); if(conter % 10 != 0) printf(" "); else printf("\n"); } } else continue; } return 0; }
- 1
信息
- ID
- 1205
- 时间
- 10000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者