C++ 如何修复c++,它';除了1个测试用例外,所有的测试用例都通过了

C++ 如何修复c++,它';除了1个测试用例外,所有的测试用例都通过了,c++,segmentation-fault,fault,C++,Segmentation Fault,Fault,我试图在用户[a,b]给定的范围内找到素数总数, 我能够通过所有的测试用例,除了最后一个和它显示的运行时错误 int n1,n; cin>>n1>>n; bool prime[n+1]; memset(prime,true,sizeof(prime)); int i=2; while(i<=n) { if(prime[i]==true)

我试图在用户[a,b]给定的范围内找到素数总数, 我能够通过所有的测试用例,除了最后一个和它显示的运行时错误

int n1,n;
        cin>>n1>>n;
        bool prime[n+1];
        memset(prime,true,sizeof(prime));
        int i=2;
        while(i<=n)
        {
            if(prime[i]==true)
            {
                int j=i*i;
                while(j<=n)
                {
                    prime[j]=false;
                    j=j+i;
                }
            }
            i++;
        }
        prime[1]=false;
        i=n1;
        int temp=0;
        while(i<=n)
        {
            if(prime[i]==true)
            {
                temp++;
            }
            i++;
        }
        cout<<temp<<"\n";
intn1,n;
cin>>n1>>n;
布尔素数[n+1];
memset(prime,true,sizeof(prime));
int i=2;

而(i代替非标准变长数组:

bool prime[n+1];
memset(prime,true,sizeof(prime));
如果
n
足够大,可能会溢出堆栈,请执行以下操作:

std::vector<bool> prime(n + 1, true);

而不是中的非标准可变长度数组:

bool prime[n+1];
memset(prime,true,sizeof(prime));
如果
n
足够大,可能会溢出堆栈,请执行以下操作:

std::vector<bool> prime(n + 1, true);

请向我们展示您的测试用例。还请提供一个。我正在尝试解决这个问题,一个问题必须是“自包含的”。所有相关信息都应该在问题中。不在外部链接后面。
memset(prime,true,sizeof(prime))在C++程序中,虽然 MyTys<代码>可以正确,但使用时总是奇怪的。<代码> STD::填充< /C> >或只是值初始化更常见。你有C背景吗?同样,VLAS不是有效的标准C++(即使某些编译器接受它们(作为扩展))。我同意@JesperJuhl,所有信息都应该在问题中。既然您已经缩小了失败的测试用例的范围,那么将值硬编码为
n
n和
n1
?当然不会有任何问题。请向我们展示您的测试用例。还请提供一个。我正在尝试解决这个问题,一个问题必须是“自包含的”。所有相关信息都应该在问题中。而不是在外部链接后面。
memset(prime,true,sizeof(prime))在C++程序中,虽然 MyTys<代码>可以正确,但使用时总是奇怪的。<代码> STD::填充< /C> >或只是值初始化更常见。你有C背景吗?同样,VLAS不是有效的标准C++(即使某些编译器接受它们(作为扩展)).我同意@JesperJuhl,所有信息都应该在问题中。既然您已经缩小了失败的测试用例的范围,那么将值硬编码为
n
n和
n1
?附录:
std::vector
与普通的
vector
s不同,因此值得一看以熟悉它我尝试使用向量,但输入10001仍然有相同的错误1000001@NileshKumar为您添加了一个修复程序。非常感谢,现在我理解了我的错误。附录:
std::vector
与普通的
vector
s不同,因此值得一看,以熟悉其中的差异ied使用矢量,但输入10001仍有相同的错误1000001@NileshKumar为你添加了一个补丁。非常感谢,现在我明白我的错误了。