给你个代码,调试通过的:#includestdio.h#includestdlib.h*全局变量,用来存储方阵,最大为51*#define NMAX 51int a[NMAX][NMAX]={0};*判断是否素数*int IsPrime (int m) { int i; if (m == 2) return 2; if (m == 1 || m % 2 == 0) return 0; for (i = 3; i * i = m;){if (m % i == 0) return 0;i += 2; } return m;} *螺旋填矩阵,输入:row,col是起始位置,step是说明第几圈,Imax是最大值*void fun(int row, int col,int number, int step,int Imax){ int i,j; for(i=0;istep*2;i++) upa[row--][col+1]=IsPrime(number++); row++;for(i=0;istep*2;i++) lefta[row][col--]=IsPrime(number++); col++;row++; for(i=0;istep*2;i++) lefta[row++][col]=IsPrime(number++); row--; col++;for(i=0;istep*2;i++) lefta[row][col++]=IsPrime(number++); col--;if(number=Imax) return; else fun(row,col,number,step+1,Imax);} int main(void){int N,I;int i,j; int row,col; printf(请输入奇数 N(最大51) and 起始数 I:);scanf(%d%d, if((int)(N2*2) != (N-1) || I1) {printf(输入有误,N 不是奇数 或者 I小于1 !程序结束); return -1; } row = col = N2; a[row][col]=IsPrime(I); fun(row,col,I+1,1,I+N*N-1); for(i=0;iN;i++) {for(j=0;jN;j++){ if(a[j]0)printf(%3d ,a[j]); else printf(*** );}printf(n); }system(pause);return 0;}赞同0|评论
|