NYOJ 22 素数求和问题

描述
现在给你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
#include <iostream>
#include <cstring>
#include <cmath>

using namespace std;

int main()
{
	int n, m,i,j,l;

	int dp[1001];
	memset(dp, 0, sizeof(dp));
	dp[2] = 1;

	for (i = 2; i <= 1000; i++)
	{
		if (i % 2)
			dp[i] = 1;
	}

	for (j = 3; j <= sqrt(1000); j += 2)
	{
		if (dp[j])
		{
			for (l = j * 2; l <= 1000; l += j)
				dp[l] = 0;
		}
	}
/*

	for (i = 0; i <= 1000; i++)
	{
		if (dp[i])
			cout << i << endl;
	}
*/

	cin >> n;
	while (n--)
	{
		cin >> m;
		l = 0;
		for (i = 0; i < m; i++)
		{
			cin >> j;
			if (dp[j])
				l += j;
		}
		cout << l << endl;
	}

	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-29 07:07:14

NYOJ 22 素数求和问题的相关文章

nyist 22 素数求和

#include<stdio.h>int main(){int m,n,i,j,a,b;scanf("%d\n",&m);while(m--) // m组数据 { int sum=0; scanf("%d\n",&n); // 某一组 n个数 for(i=0;i<n;i++){ scanf("%d",&a); //分别输出这 n个数 变量afor(j=2;j<=a-1;j++) // 素数判定 if

NYOJ题目22 素数求和

题目描述: 现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和.输入第一行给出整数M(0<M<10)代表多少组测试数据每组测试数据第一行给你N,代表该组测试数据的数量.接下来的N个数为要测试的数据,每个数小于1000输出每组测试数据结果占一行,输出给出的测试数据的所有素数和样例输入351 2 3 4 5811 12 13 14 15 16 17 181021 22 23 24 25 26 27 28 29 30样例输出104152 #inc

南阳理工OJ之素数求和问题

---------------------------------------------- AC代码: 1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 7 preprocess(); 8 9 Scanner sc=new Scanner(System.in); 10 11 int times=sc.nextInt(); 12 while(time

素数求和问题

素数求和问题 时间限制: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

2014-4-25 运行号:837134 素数求和

#include <iostream>#include <cstdio>#include <cstdlib>#include <string>#include <cmath>#include <cstring>#include <algorithm>using namespace std;bool pre_arry[1100];void pre_cnt() //素数筛{    memset(pre_arry,1,sizeo

素数求和

#include <iostream> using namespace std; int fun(int a) { if(a==1) return 0; for(int i=2;i<a;i++) { if(a%i==0) return 0; } return 1; } int main() { int x,M,N; cout<<"测试数据组数: "; cin>>M; while(M--) { int i,sum=0; cout<<&

梦工场实验室 素数求和 神奇的素数筛选

问题 G: 素数求和 时间限制: 1 Sec  内存限制: 256 MB提交: 142  解决: 30[提交][状态][讨论版] 题目描述 输入一个自然数n,求小于等于n的素数之和 输入 输出 样例输入 2 样例输出 2 提示 测试样例保证 2 <= n <= 2,000,000 埃拉托斯特尼筛法(Sieve of Eratosthenes) #include<stdio.h> #include<string.h> #include<stdlib.h> #i

nyoj 22-素数求和问题(打表)

22-素数求和问题 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:41 submit:52 题目描述: 现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和. 输入描述: 第一行给出整数M(0<M<10)代表多少组测试数据 每组测试数据第一行给你N,代表该组测试数据的数量. 接下来的N个数为要测试的数据,每个数小于1000 输出描述: 每组测试数据结果占一行,输出给出的测试数据的所有素数和

nyoj 24 素数距离问题

素数距离问题 时间限制:3000 ms  |            内存限制:65535 KB 难度:2 描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.如果左右有等距离长度素数,则输出左侧的值及相应距离. 如果输入的整数本身就是素数,则输出该素数本身,距离输出0 输入 第一行给出测试数据组数N(0<N<=10000) 接下来的N行每行有一个整数M(0<M<1000000), 输出 每行输出两个整数 A B. 其中A表示离相应测试数据最近的