rt,感觉是正解但是
#include<bits/stdc++.h>
#include<iostream>
#include<queue>
#include<stack>
#include<stdio.h>
#include<math.h>
#define int long long
using namespace std;
int T;
int a[10050][10050];
int ans[10050][10050];
signed ans1[10050]={0};
bool is_prime(int r){
if(r==1) return 0;
for(int i=2;i*i<=r;i++) if(r%i==0) return 0;
return 1;
}
signed main()
{
cin>>T;
while(T--){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
memset(ans1,0,sizeof(ans1));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(is_prime(a[i][j])==0) ans[i][j]=0;
else{
ans[i][j]=ans1[j]+1;
ans1[j]++;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<ans[i][j]<<' ';
}
cout<<"\n";
}
}
return 0;
}
/*
2
4 3
1 7 1
1 7 1
1 7 1
1 7 1
3 3
1 2 3
4 5 6
7 8 9
*/
求助大佬指点,实在不行贴一下代码也行