C语言求第N到第M个素数的和,N,M<小于200?

C语言求第N到第M个素数的和,N,M<小于200?

问题描述:

#include
#include
int isPrime(int n)
{
if (n<=1) return 0;
int sqr=(int)sqrt(1.0*n);
for (int i=2;i<=sqr;i++){
if(n%i==0) return 0;
}
return 1;
}
int main()
{
int m,n;
int pNum=1,sum=0;
int prime[200]={0};
scanf("%d %d",&n,&m);
for(int i=1;i<=2000;i++)//此处改为i<=1000却可以运行,但不能满分
{
if(isPrime(i)==1)
prime[pNum++]=i;
}
for(int j=n;j<=m;j++)
sum+=prime[j];
printf("%d",sum);
return 0;
}

用i<=2000的时候素数大于200个了,造成你的int prime[200]数组越界了