n是质数就全是1,不是质数就在全是1的基础上只改主对角线的元素,直到这个元素不是质数且和是素数就彳亍了,主对角线全部改成这个元素就满足了。(没想到有0,想麻烦了,我菜死了QAQ)
#include<bits/stdc++.h>
#define ll long long
#define mod 19260817
using namespace std;
const ll N = 1e2 + 10;
int t,n;
int a[N][N];
bool fun(int n)
{
if (n == 2)
return true;
for (int i = 2; i <= n - 1;i++)
if (n % i == 0)
return false;
return true;
}
int main()
{
cin >> t;
while(t--)
{
cin >> n;
if(fun(n))
{
for (int i = 1; i <= n;i++)
{
for (int j = 1; j <= n;j++)
{
cout << 1 << " ";
}
puts("");
}
continue;
}
for (int i = 1; i <= n;i++)
for (int j = 1; j <= n;j++)
a[i][j] = 1;
int x = n;
for (int i = 1;;i++)
{
a[1][1]++;
x++;
if (fun(x) && !fun(a[1][1]))
break;
}
for (int i = 1; i <= n;i++)
{
for (int j = 1; j <= n;j++)
{
if (i == j)
{
if (i != n)
cout << a[1][1] << " ";
else
cout << a[1][1];
}
else
cout << 1 << ' ';
}
puts("");
}
}
return 0;
}