素数求和问题
描述
现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。
- 输入
- 第一行给出整数M(0<M<10)代表多少组测试数据
每组测试数据第一行给你N,代表该组测试数据的数量。
接下来的N个数为要测试的数据,每个数小于1000 - 输出
- 每组测试数据结果占一行,输出给出的测试数据的所有素数和
- 样例输入
3 5 1 2 3 4 5 8 11 12 13 14 15 16 17 18 10 21 22 23 24 25 26 27 28 29 30
样例输出
10 41 52
测试代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 5 int isPrime(int num) 6 { 7 int j; 8 if (num == 2) 9 { 10 return num; 11 } 12 if (num % 2 == 0 || num < 2) 13 { 14 return 0; 15 } 16 for (j = 3; j * j <= num; j += 2) 17 { 18 if (num % j == 0) 19 { 20 return 0; 21 } 22 } 23 return num; 24 } 25 26 int main() 27 { 28 int n, i, j, m, sum; 29 int *a; 30 scanf("%d", &n); 31 for (i = 0; i < n; i++) 32 { 33 sum = 0; 34 scanf("%d", &m); 35 a = (int *)calloc(m, sizeof(int)); 36 assert(a != NULL); 37 for (j = 0; j < m; j++) 38 { 39 scanf("%d", a + j); 40 sum += isPrime(a[j]); 41 } 42 printf("%d\n",sum); 43 free(a); 44 } 45 return 0; 46 }