user-0 提问: 这个程序为什么运行不出来？哪里错了？求大神

回复:
user: user-0
content: 引用 4 楼 github_27756899的回复:楼主代码：  int main() { int i,n,m,sum; int a[200]; a[0]=2; a[1]=3;   scanf("%d,%d",n,m);//n=1,m=2,sum=5 if(n==1&&m==2)	//n=1,m=3,sum=7 sum=5;  else { for(i=n-1;i<m;i++)     a[i]=a[i-1]+2;         sum=sum+a[i];  printf("%d",sum); }   }  修改后的代码：  int main() { int i,n,m,sum; sum=0;  //初始化sum int a[200]; a[0]=2; a[1]=3;   scanf("%d,%d",n,m);//n=1,m=2,sum=5 if(n==1&&m==2)	//n=1,m=3,sum=7 sum=5;  else { for(i=n-1;i<m;i++)    sum=sum+a[i];  //修改后  printf("%d",sum); }   }  这样还知道每个素数是多少吗？a[3].a [i]不知道大小，

user: user-1
content: Finding prime numbers - Kenneth Haugland  Different schemas for finding prime numbers explained with code  http://www.codeproject.com/Articles/429694/Finding-prime-numbers

user: user-2
content: 引用 10 楼 CGH1995 的回复:[quote=引用 5 楼 zhangxiangDavaid 的回复:] 这样可好：  #include <stdio.h> static int primes[200]; int i, j, v; int m, n; int sum; int main(void) { 	sum = 0; 	scanf("%d%d", &n, &m); 	primes[0] = 2, primes[1] = 3, primes[2] = 5, primes[3] = 7; 	i = 4, v = 8; 	while (1) 	{ 		if (200 == i)break; 		for (j = 0; j < i && v % primes[j]; j++); 		if (j == i) 		{ 			primes[i] = v; 			i++; 		} 		v++; 	} 	for (i = n - 1; i <= m - 1; i++) 		sum += primes[i]; 	printf("sum=%d\n", sum); 	return 0; }  sum总是为i0[/quote] 我测试过，还没发现问题。

user: user-0
content: 引用 5 楼 zhangxiangDavaid 的回复:这样可好：  #include <stdio.h> static int primes[200]; int i, j, v; int m, n; int sum; int main(void) { 	sum = 0; 	scanf("%d%d", &n, &m); 	primes[0] = 2, primes[1] = 3, primes[2] = 5, primes[3] = 7; 	i = 4, v = 8; 	while (1) 	{ 		if (200 == i)break; 		for (j = 0; j < i && v % primes[j]; j++); 		if (j == i) 		{ 			primes[i] = v; 			i++; 		} 		v++; 	} 	for (i = n - 1; i <= m - 1; i++) 		sum += primes[i]; 	printf("sum=%d\n", sum); 	return 0; }    sum总是为i0

user: user-2
content: 这样可好：  #include <stdio.h> static int primes[200]; int i, j, v; int m, n; int sum; int main(void) { 	sum = 0; 	scanf("%d%d", &n, &m); 	primes[0] = 2, primes[1] = 3, primes[2] = 5, primes[3] = 7; 	i = 4, v = 8; 	while (1) 	{ 		if (200 == i)break; 		for (j = 0; j < i && v % primes[j]; j++); 		if (j == i) 		{ 			primes[i] = v; 			i++; 		} 		v++; 	} 	for (i = n - 1; i <= m - 1; i++) 		sum += primes[i]; 	printf("sum=%d\n", sum); 	return 0; }

user: user-3
content: 楼主代码：  int main() { int i,n,m,sum; int a[200]; a[0]=2; a[1]=3;   scanf("%d,%d",n,m);//n=1,m=2,sum=5 if(n==1&&m==2)	//n=1,m=3,sum=7 sum=5;  else { for(i=n-1;i<m;i++)     a[i]=a[i-1]+2;         sum=sum+a[i];  printf("%d",sum); }   }  修改后的代码：  int main() { int i,n,m,sum; sum=0;  //初始化sum int a[200]; a[0]=2; a[1]=3;   scanf("%d,%d",n,m);//n=1,m=2,sum=5 if(n==1&&m==2)	//n=1,m=3,sum=7 sum=5;  else { for(i=n-1;i<m;i++)    sum=sum+a[i];  //修改后  printf("%d",sum); }   }

user: user-4
content: 参考代码：  bool IsPrime(int num)  //判断是否为素数 { 	int i, mid; 	if(num <= 1) 		return false;  	mid = (int)sqrt(num); 	for(i = 2; i <=  mid; i++) 	{ 		if(num % i == 0) 			return false; 	}  	return true; }  int main() { 	int i,n, m, sum = 0; 	scanf("%d%d", &n, &m); 	for(i = n; i <= m; i++) 	{ 		if(IsPrime(i)) 			sum += i; 	} 	printf("%d\n", sum);     return 0; }

user: user-4
content: 楼主，你这是什么算法啊，我完全没看懂。还有scanf中两个%d中间有逗号，则在输入时，必须敲逗号进行匹配

user: user-0
content: 楼主是菜鸟，大家帮帮忙

user: user-5
content: 速度慢了，直接打表

user: user-0
content: 引用 2 楼 ant2012的回复:楼主，你这是什么算法啊，我完全没看懂。还有scanf中两个%d中间有逗号，则在输入时，必须敲逗号进行匹配 我知道，输入的时候加上逗号了