题目22: 素数求和问题
- 输入
- 第一行给出整数M(0<M<10)代表多少组测试数据
每组测试数据第一行给你N,代表该组测试数据的数量。
接下来的N个数为要测试的数据,每个数小于1000 - 输出
- 每组测试数据结果占一行,输出给出的测试数据的所有素数和
- 样例输入
351 2 3 4 5811 12 13 14 15 16 17 181021 22 23 24 25 26 27 28 29 30
- 样例输出
104152
/********************************** 日期:2013-3-25* 作者:SJF0115* 题号: 题目22: 素数求和问题* 来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=22* 结果:AC* 来源:南阳理工OJ* 总结:**********************************/#include<stdio.h>#include<string.h>#define MAXSIZE 1001int prime[MAXSIZE];//素数表void Prime(){memset(prime,0,sizeof(prime));for(int i = 2;i < MAXSIZE;i++){//非素数跳过if(prime[i]){continue;}else{for(int j = i*i;j < MAXSIZE;j += i){prime[j] = 1;}}}}int main(){int N,i,M,sum,x;//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);scanf("%d",&N);//素数表Prime();prime[1] = 1;prime[0] = 1;//N组测试数据while(N--){sum = 0;//M个数据scanf("%d",&M);for(i = 0;i < M;i++){scanf("%d",&x);//素数相加if(prime[x] == 0){sum += x;}}printf("%d\n",sum);}return 0;}