renzhanwen @ 2024-09-19 22:06:42
40分记录
#include<bits/stdc++.h>
using namespace std;
int n,x,y,m=-1,i=1,j=1,w=1;
bool isprime[10000000],vis[100][100];
vector<int> primes;
int main()
{
cin>>n>>x>>y;
for(int i=1;i<=100000;i++)
isprime[i]=true;
for(int i=2;i<=100000;i++)
{
if(isprime[i])
primes.push_back(i);
for(int j=0;j<primes.size();j++)
{
int p=primes[j];
if(i*p>100000)
break;
isprime[i*p]=false;
if(i%p==0)
break;
}
}
while(m<n*n)
{
vis[i][j]=true;
m++;
if(x==i&&y==j)
{
cout<<primes[m];
return 0;
}
if(w==1)
{
if(j+1<=n&&!vis[i][j+1])
j++;
else
w=2,i++;
continue;
}
if(w==2)
{
if(i+1<=n&&!vis[i+1][j])
i++;
else
w=3,j--;
continue;
}
if(w==3)
{
if(j-1>=1&&!vis[i-1][j])
j--;
else
w=4,i--;
continue;
}
if(i-1>=1&&!vis[i-1][j])
i--;
else
w=1,j++;
}
return 0;
}