原题戳这里
#include<bits/stdc++.h>
using namespace std;
int n,m,mp[11][11],bz[101];
void dfs(int,int);
void print();
bool is_prime(int);
int main()
{
cin>>n>>m;
mp[1][1]=1;
bz[1]=1;
dfs(1,2);
cout<<"NO!";
return 0;
}
void dfs(int x,int y)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<mp[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
if(x>n)
{
print();
exit(0);
}
else
{
for(int i=2;i<=n*m;i++)
{
if(!bz[i])
{
bz[i]=1;
if(x==1 and is_prime(i+mp[x][y-1])==true)
{
if(y==m)
{
mp[1][y]=i;
dfs(2,1);
}
else
{
mp[1][y]=i;
dfs(1,y+1);
}
}
if(x!=1 and is_prime(i+mp[x][y-1])==true and is_prime(i+mp[x-1][y])==true)
{
if(y==m)
{
mp[x][y]=i;
dfs(x+1,1);
}
else
{
mp[x][y]=i;
dfs(x,y+1);
}
}
bz[i]=0;
}
}
}
}
void print()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<mp[i][j]<<" ";
}
cout<<endl;
}
}
bool is_prime(int x)
{
if(x<=1)
{
return false;
}
else
{
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
{
return false;
}
}
return true;
}
}
愿各位神犇高抬贵手,帮助本蒟蒻吧!