您的位置:首页 > 其它

ACM(022)素数求和(2)

2014-01-06 21:11 218 查看

素数求和问题

时间限制:3000 ms | 内存限制:65535 KB

难度:2

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

来源 [hzyqazasdf]原创
上传者 hzyqazasdf

代码如下:
#include <iostream>
using namespace std;
#include <cmath>//用于 sqrt()函数 
bool prime(int a);//判断一个数是否为素数 
int main()
{
	int n=0;
	cin>>n;//输入数据组数 
	while(n--)
	{
		int m,r=0;// r 为将输出的结果 
		cin>>m;//输入每组数据的个数 
		while(m--)
		{
			int a;
			bool p=1;//用于判断此数是否为素数 
			cin>>a;//输入一个数据 a 
			p=prime(a);//判断 a 是否为素数 
			if(p==1)//若 a 为素数 
				r +=a;//则让输出结果 r 加一 
		}
		cout<<r<<endl;//输出 r  
	}
}

bool prime(int a)
{
	if(a<2)
		return 0;
	else
	{
		for(int i=2;i<=sqrt(a);i++)//只需判断到的 a 的开方处 
		{
			if(a%i==0)//若 i 为 a 的因数,则返回 false 
				return 0;
		}
		return 1;//返回 true 
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: