标签:
Description
如2*3矩阵:
2 7 11
3 5 13
再如3*4的矩阵
2 13 17 37
3 11 19 31
5 7 23 29
Input
第一行为一个正整数T,表示数据的组数,接下来T行,每行两个正整数n,m,表示矩阵有n行m列
Output
Sample Input
Sample Output
Hint
1<=n,m<=100
下面的代码老是超时啊啊啊啊啊啊啊!!
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 5 int zhi(int num) 6 { 7 int i,j,h=0; 8 static int k=2; 9 for(i=k;;i++) 10 { 11 int k=sqrt(i)+1; 12 for(j=2;j<=k;j++) 13 { 14 if(i%j==0) 15 break; 16 } 17 if(i==3) 18 h++; 19 if(h==num) 20 return i; 21 if(j<=k) 22 continue; 23 24 h++; 25 if(h==num) 26 { 27 k=i+1; 28 return i; 29 } 30 } 31 } 32 int main() 33 { 34 35 int a[20][20]; 36 int m,n,x,y; 37 int T; 38 scanf("%d",&T); 39 while(T--) 40 { 41 scanf("%d%d",&m,&n); 42 {memset(a,0,sizeof(a)); 43 int count=1; 44 a[x=0][y=0]=2; 45 while(1) 46 { 47 while(!a[x+1][y]&&x+1<m) 48 a[++x][y]=zhi(++count); 49 if(!a[x][y+1]&&y+1<n) 50 a[x][++y]=zhi(++count); 51 while(!a[x-1][y]&&x-1>=0) 52 a[--x][y]=zhi(++count); 53 if(!a[x][y-1]&&y-1>=0) 54 a[x][--y]=zhi(++count); 55 if(count==m*n) 56 break; 57 } 58 for(x=0;x<m;x++) 59 { 60 for(y=0;y<n;y++) 61 printf("%3d",a[x][y]); 62 printf("\n"); 63 } 64 } 65 } 66 67 }
标签:
原文地址:http://www.cnblogs.com/a1225234/p/4480693.html