C++ 如何修复c++,它';除了1个测试用例外,所有的测试用例都通过了
我试图在用户[a,b]给定的范围内找到素数总数, 我能够通过所有的测试用例,除了最后一个和它显示的运行时错误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)
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为你添加了一个补丁。非常感谢,现在我明白我的错误了。