素数求和问题

描述

  现在给你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 }

 

posted @ 2016-05-09 13:24  新生代黑马  阅读(185)  评论(0编辑  收藏  举报