ACM oj:http://acm.nyist.net/JudgeOnline/problemset.php

题目要求:

描述现在给你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 //求n个整数中素数的和 0<n<1000  注意1不能算素数
 2 #include <stdio.h>
 3 #include <math.h>
 4 
 5 #define SIZE 1000
 6 #define TRUE 1
 7 #define FALSE 0
 8 
 9 int validNum(int);                            //判断一个数是否为素数
10 
11 int main()
12 {
13     int array[SIZE];                        //存放输入的数组
14     int m;                                    //数据组数
15     int n;                                    //每组数据个数
16     int sum = 0;                            //每组数据素数的和
17 
18     scanf("%d", &m);
19     while(m > 0)
20     {
21         int i = 0;
22         sum = 0;
23 
24         scanf("%d", &n);                    //输入数据个数
25         
26         while(i < n)                        //开始处理每组数据
27         {
28             scanf("%d", &array[i]);
29             if(validNum(array[i]) == TRUE)
30                 sum += array[i];
31             i ++;
32         }
33         printf("%d\n", sum);                //输出每组数据的处理结果
34         m --;
35     }
36 }
37 //判断num是否是一个素数  TRUE--是 FALSE--否
38 int validNum(int num)
39 {
40     int i = 2;
41     int flag = TRUE;
42     int k = (int)sqrt(num);
43     for(; i <= k; i ++)
44     {
45         if((num % i) == 0)
46         {
47             flag = FALSE;
48             break;
49         }
50     }
51     if(num == 1)
52         flag = FALSE;                        //1不算素数
53 
54     return flag;
55 }