问题 B: 省赛专用题(2)
时间限制: 1 Sec 内存限制: 128 MB提交: 49 解决: 13
[ 提交][ 状态][ 讨论版]
题目描述
如2*3矩阵:
2 13 11
3 5 7
再如3*4的矩阵
2 29 23 19
3 31 37 17
5 7 11 13
输入
输出
样例输入
2
2 3
3 4
样例输出
2 13 11
3 5 7
2 29 23 19
3 31 37 17
5 7 11 13
提示
1<=n,m<=10
#include<iostream>
#include<cstring>
using namespace std;
int is_prime(int n)
{
for( int i=2;i*i<=n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int a[100][100];
int prime[10000];
int main()
{
int t,i,n,m,j,x,y;
cin>>t;
while(t--)
{
cin>>n>>m;
int count=0;
for(i=2;;i++)
{
if(is_prime(i))
prime[count++]=i;
if(count==10000)
break;
}
memset(a,0,sizeof(a));
prime[j=0]=a[x=0][y=0]=2;
while(j<n*m-1)
{
while(x+1<n&&!a[x+1][y]) a[++x][y]=prime[++j];
while(y+1<m&&!a[x][y+1]) a[x][++y]=prime[++j];
while(x-1>=0&&!a[x-1][y]) a[--x][y]=prime[++j];
while(y-1>=0&&!a[x][y-1]) a[x][--y]=prime[++j];
}
for(x=0;x<n;x++)
{
for(y=0;y<m;y++)
{
cout<<' '<<' '<<' '<<' '<<' '<<' '<<' '<<a[x][y];
}
cout<<endl;
}
}
return 0;
}