We know that prime numbers are positive integers that have exactly two distinct positive divisors.
Similarly, we'll call a positive integer t Т-prime, if t has exactly three distinct positive divisors。
You are given an array of n positive integers. For each of them determine whether it is Т-prime or not.
The first line contains a single positive integer, n (1?≤?n?≤?10000),showing how many numbers are in the array.
The next line contains n space-separated integers xi (1?≤?xi?≤?10^12).
Print on
3 4 5 6
1
Please use long long instead of int for any Xi.
The given test has three numbers.
The first number 4 has exactly three divisors — 1, 2 and 4.
The second number 5 has two divisors (1 and 5),
The third number 6 has four divisors (1, 2, 3, 6),
hence the answer for them is 1 (on
#include<iostream>
#include<math.h>
using namespace std;
bool prime[1000001];
void make_prime() {
for (int i = 0; i < 1000001; i++) prime[i] = true;
for (int i = 2; i < 1000001; i++) {
if (prime[i]) {
for (int j = 2; j * i < 1000001; j++) {
prime[i * j] = false;
}
}
}
}
int main()
{
std::cout.sync_with_stdio(false);
make_prime();
int n, ans = 0;
cin>>n;
while(n--)
{
long long temp;
cin >> temp;
double truepos = sqrt(temp);
long long pos = (int)sqrt(temp);
if (temp >= 4 && truepos - pos == 0 && prime[pos]) ans++;
}
cout<<ans<< endl;
//getchar();
return 0;
}