gpt4 book ai didi

C 程序因某些输入而突然结束

转载 作者:行者123 更新时间:2023-11-30 18:28:02 26 4
gpt4 key购买 nike

这个程序应该找到所有小于的素数的总和或等于 N。但对于某些随机输入,它会给出运行时错误。任何帮助将不胜感激。

#include<stdio.h>
#include<stdlib.h>

int main()
{
int j,i,t;
long long int n, sum=0;
scanf("%d",&t);

while(t--)
{
scanf("%lld",&n);
int *a=malloc(sizeof(int)*n);
a[0]=0;
a[1]=0;

for(i=2; i<=n; i++)
{
a[i]=i;
}

for(i=2; i<=n; i++)
{
for(j=2; i*j<=n; j++)
{
a[i*j]=0;
}

if(a[i])
{
sum+=a[i];
}
}

printf("%lld\n",sum);
sum=0;
}

return 0;
}

最佳答案

malloc(sizeof(int)*n);

这会为 n int 分配位置,从索引 0 开始,最后一个有效的索引位于 n - 1.

    for(i=2; i<=n; i++)
{
a[i]=i;

这将写入索引2..n,其中包括超出数组范围的n

同样的情况也发生在

        for(j=2; i*j<=n; j++)
{
a[i*j]=0;

如果n能被i整除

关于C 程序因某些输入而突然结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50295207/

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