链接:https://www.cometoj.com/contest/64/problem/B?problem_id=3516
题解:只要在m+1在(n+1)/2和(n+1)之间(左开右闭),且m+1是一个质数,则只需要一次即可,而其他情况的话则需两次(是赛场上得出的结论)
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<stack>
#include<cstring>
#include<map>
#include<queue>
#include<cmath>
#include<set>
#define INF 0x3f3f3f3f
#define lowbit(a) ((a)&-(a))
#define speed std::ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
using namespace std;
typedef long long ll;
queue<int> q;
stack<int> s;
priority_queue<int> pq;
const int maxn = 100005;
ll n,m,l,r;
ll ans=0;
int main()
{
cin>>n>>m;
ll flag=1;
r=n+1;
l=r/2;
m+=1;
if(n==2){
cout<<"1\n";
return 0;
}
if(m>l&&m<=r){
for(ll i=2;i*i<=m;i++){
if(m%i==0){
flag=0;
}
}
if(flag)
cout<<"1\n";
else
cout<<"2\n";
}
else
cout<<"2\n";
}