Sum Sum Sum
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1356 Accepted Submission(s): 817
Total Submission(s): 1356 Accepted Submission(s): 817
Problem Description
We call a positive number
X
P-number if there is not a positive number that is less than
X
and the greatest common divisor of these two numbers is bigger than 1.
Now you are given a sequence of integers. You task is to calculate the sum of P-numbers of the sequence.
Now you are given a sequence of integers. You task is to calculate the sum of P-numbers of the sequence.
Input
There are several test cases.
In each test case:
The first line contains a integer N(1≤N≤1000). The second line contains N integers. Each integer is between 1 and 1000.
In each test case:
The first line contains a integer N(1≤N≤1000). The second line contains N integers. Each integer is between 1 and 1000.
Output
For each test case, output the sum of P-numbers of the sequence.
Sample Input
3 5 6 7 1 10
Sample Output
12 0
题意:给n个数,求其中素数之和
思路:打表素数筛选,判断素数,注意此题中1也要当成素数
#include<bits/stdc++.h>
#include <ctime>
#define N 1050
using namespace std;
typedef long long ll;
int prime[N], notprime[N];
void init()
{
prime[1] = 1;
for (int i = 2; i < N; i++)
{
if (notprime[i])
{
continue;
}
prime[i] = 1;
for (int j = i * i; j < N; j += i)
{
notprime[j] = 1;
}
}
}
int main()
{
std::ios::sync_with_stdio(false);
int n, t;
init();
while (cin >> n)
{
long long ans = 0;
for (int i = 0; i < n; i++)
{
cin >> t;
if (prime[t])
{
ans += t;
}
}
cout << ans << endl;
}
return 0;
}