为什么无法通过测试?

1

素数和(5分)

题目内容:

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

 

输入格式:

两个整数,第一个表示n,第二个表示m。

 

输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

 

输入样例:

2 4

 

输出样例:

15

#include <stdio.h>
int isprime(int number);
int main (int argc,const char*argv[]){
	int n,m;
	scanf("%d",&n);
	scanf("%d",&m);
	int a[200];
	int cnt=0;
	int amount=0;
	
	for(int i=2;i<=200;i++){
		int ret=isprime(i);
		if(ret==1){
			a[cnt++]=i;
		}
		ret=0; 
	}
	int temp=n-1;
	for(temp;temp<=m-1;temp++){
		amount+=a[temp];
	}
	printf("%d",amount);
	return 0;
}
int isprime(int number){
	int prime=1;
	for(int i=2;i<number;i++){
		if(number%i==0){
			prime=0;    
			break;
		}
	}
	return prime;
}
	for(int i=2;i<=200;i++){//这里i表示第i个素数,这是错误的

		int ret=isprime(i);//这里i表示第i个整数,所以i不应该有限制

		if(ret==1){

			a[cnt++]=i;//真正有限制的应该是cnt,cnt<200

		}

		ret=0; 

	}



	for(int i=2,cnt=0;cnt<200;i++,cnt++){

		int ret=isprime(i);

		if(ret==1){

			a[cnt]=i;

		}

		ret=0; 

	}