6分得3分,运行结果没问题,求解

img

img

int prime(int n)
{
    if(n<=1)
        return 0;
    int i;
    for( i=2; i*i<=n; i++) 
    {
    if(n%i==0)
    return 0;
    }
    return 1;
}
int twinNumber(int x, int y){
    int k=0;
    if(x>0&&y>0){
   for(int i=x;i<=y;i++)
    {
        if(prime(i)&&prime(i+2))
        {
            k++;
        }
    }
    return k;}
}

i=x;i<=y
prime(i)&&prime(i+2)
当i取到y的时候,i+2取到y+2了,超范围了,那不多算了吗
改成
i=x;i<=y-2
-=-=-=-=-
你想吧,5和7是孪生素数,如果我传入5,6,那么5,6之间应该没有孪生素数,但是按你的逻辑跑就能输出一组