gpt4 book ai didi

c - 为什么我的 PRIME1 - SPOJ 实现会收到 SIGSEGV,即使它在我的电脑中的所有测试用例中运行良好?

转载 作者:行者123 更新时间:2023-11-30 19:46:48 24 4
gpt4 key购买 nike

输入:

The input begins with the number t of test cases in a single line (t<=10). In each of the next t lines there are two numbers m and n (1 <= m <= n <= 1000000000, n-m<=100000) separated by a space.

这是问题的链接:http://www.spoj.com/problems/PRIME1/

这是我的程序:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int n,m,t,i=0,j,k=0;
int tm[10],tn[10];
scanf("%d",&t); //test cases
while(i<t)
{
scanf("%d %d", &tm[i],&tn[i]);
i++;
}
int * a = malloc((n+1)*sizeof(int));

while(k<t)
{
n=tn[k];
m=tm[k];
a[0]=a[1]=0;
for(i=2;i<=n;i++)
a[i]=i;
for(i=2;i<=sqrt(n);i++)
{
if(a[i])
{
for(j=(i*i);j<=n;j+=i)
{
a[j]=0;
}
}
}
for(i=m;i<=n;i++)
{
if(a[i])
printf("%d \n", a[i]);
}
k++;
printf("\n");
}
return 0;
}

最佳答案

许多编码站点不允许声明大小为 10^9 的数组。这可能会导致 SIGSEGV。

您需要以任何方式更改代码逻辑,因为即使您解决了此错误,您的逻辑也可能会给您带来 TLE

关于c - 为什么我的 PRIME1 - SPOJ 实现会收到 SIGSEGV,即使它在我的电脑中的所有测试用例中运行良好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23161100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com