浙大PTA乙级1007素数对猜想为什么数组的定义要放在main函数外面,否则会出现测试点5无法通过的错误

代码如下所示,如果int arr[100000]语句放在main函数中,则会出现测试点5无法通过的情况,求解答

#include <stdio.h>
#include <math.h>//sqrt所在的包
int arr[100000];//为什么这句话要放在main函数的外面,如果放在main函数里面则会出现测试点5的错误

int main()
{
    int n,i,j,warn;
    int num = 0;//统计素数对的个数
    int k = 0;//下标
    scanf("%d",&n);//读入N
    //arr[0] = 0;//可以对数组进行部分初始化,存素数的数组
    for (i=2;i<=n;i++)//从最小的素数开始遍历判断
    {
        warn = 0;
        for (j=2;j<=sqrt(i);j++)
        {
            if (i%j==0)
            {
                warn = 1;
                break;//不是素数
            }
        }
        if (warn==0)//是素数
            arr[k++] = i;//存入素数数组
    }
    
    for (i=0;i<=n;i++){
        if (arr[i+1]-arr[i]==2)
            num++;
    }

    printf("%d",num);
    return 0;
}