伯特兰—切比雪夫定理说明:若整数n > 3,则至少存在一个质数p,符合n < p < 2n − 2。另一个稍弱说法是:对于所有大于1的整数n,至少存在一个质数p,符合n < p < 2n。
若k+1为质数
1:2-n+1不包含k+1的倍数则显然仅需一步
2:否则,告诉不是k+1倍数的所有数,然后显然gcd(x*(k+1),x*(k+1)+1)=1,所以仅需两步
若k+1为合数
则第一步告诉(n+1)/2<p<n+1的一个质数(伯特兰—切比雪夫定理)p
显然n+1中不包含p的倍数所以仅需两步
#include <iostream>
#include <cstring>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <cstdio>
#include <stdio.h>
#include<queue>
#include<math.h>
#include<stack>
#include<set>
#include<map>
using namespace std;
#define ll long long
bool prim(ll x)
{
for(ll i=2;i<=sqrt(x);i++)
{
if(x%i==0)return 0;
}
return 1;
}
int main()
{
ll n,k;
scanf("%lld %lld",&n,&k);
n++,k++;
if(prim(k))
{
if(n>=2*k)
{
printf("2\n");
}
else printf("1\n");
}
else printf("2\n");
}