Comet OJ - Contest #9 B

想了好久,我一直以为1e14/2==1e7,晕。

解法:将n/2,如果k大于了n/2并且它是一个素数,那么它一定能够筛完所有的数(sqrt筛法),因为2*k>n,其他的答案就是一定是2,因为n/2~n之间一定有一个质数,伯特兰-切比雪夫定理

#include
using namespace std;
bool judge(long long k)
{
    for(int i=2;i<=sqrt(k);i++)
    {
        if(k%i==0)
        return 0;
    }
    return 1;
}
int main()
{
    long long n,k;
    scanf("%lld%lld",&n,&k);
    n++,k++;
    long long ha=n/2;
    int ans=2;
    if(k>ha)
    {
        if(judge(k))
            ans=1;
    }
    printf("%d\n",ans);
    return 0;
}

 

你可能感兴趣的:(数论)