#include<iostream>
#include<vector>
#include<iomanip>
#include<cmath>
using namespace std;
int T, k = 2;
int prime();
bool isprime(int);
int main(){
cin >> T;
vector<int> primeNum;
while(primeNum.size() != 10000){//由题干可知,我们先计算10000质数存起来以备后用(当然不提前计算也可以)
primeNum.push_back(prime());
}
while(T--){
int m, n;
cin >> m >> n;
int matrix[m][n];
int start = 0, dir = 1, t = 0;//用dir实现方向的控制
for(int i = 0; i < n; i++){
for(int j = start; (j >= 0 && j < m); j += dir){
matrix[j][i] = primeNum[t++];
}
start += dir * (m - 1);//改变起始的下标
dir *= -1;//改变dir的方向
}
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
cout << setw(6) << matrix[i][j];//按照格式输出
}
cout << endl;
}
}
return 0;
}
int prime(){//用于输出质数
while(true){
if(isprime(k)){
return k++;
}else{
k++;
}
}
}
bool isprime(int k){//判断是不是质数
for(int i = 2; i <= sqrt((double)k); i++)
if(k % i == 0) return false;
return true;
}
//presented by 大吉大利,今晚AC
合肥工业大学oj 1338 二维矩阵
猜你喜欢
转载自blog.csdn.net/lalala_HFUT/article/details/88063626
今日推荐
周排行