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 }