素数求和

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

采用筛法求素数,1000以内的素数,使用70MS左右,测试的时候,不同时刻运行

,得到的时间不同,差别不大。我也不明白为什么!

代码如下:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

#define MAX_SIZE 1000
bool isPrime[MAX_SIZE];

void CreatePrimeTable()
{
memset(isPrime, true, sizeof(isPrime));
isPrime[0] = isPrime[1] = false;
int i, j;
for (i = 2; i * i <= MAX_SIZE; i++)
{
if (isPrime[i])
{
for (j = i * 2; j <= MAX_SIZE; j += i)
isPrime[j] = false;
}
}
}
int main()
{

CreatePrimeTable();

int m, n;

cin >> m;
for (int i = 1; i <= m; i++)
{
int sum = 0, a;
scanf("%d", &n);
for (int j = 1; j <= n; j++)
{
scanf("%d", &a);
if (isPrime[a])
{
sum += a;
}

}
printf("%d\n", sum);
}

return 0;
}


目录
相关文章
|
2月前
素数
素数
20 0
|
13天前
PTA-第4章-2 统计素数并求和
该代码用于统计并求和给定区间[M, N](1≤M≤N≤500)内的素数。输入包含两整数M和N,输出为素数个数和它们的和。例如,输入10 31,输出7 143。代码通过遍历区间,检查每个数是否能被小于它的数整除来判断是否为素数。
17 0
|
4月前
|
算法 测试技术 C#
C++二分算法的应用:乘法表中第k小的数
C++二分算法的应用:乘法表中第k小的数
|
8月前
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
48 0
输出100以内的素数(质数)
输出100以内的素数(质数)
104 0
|
机器学习/深度学习 C语言
【C素数】素数(质数)和分解质因数
【C素数】素数(质数)和分解质因数
84 0
【C素数】素数(质数)和分解质因数
素数求和
这是刚开始写的代码,有点长。
58 0
求自定义范围内的素数(质数)
判定数字是质数需要循环判断 因此需要定义(flag)用于记录循环的结果 结果如图
65 0
求自定义范围内的素数(质数)

热门文章

最新文章