Pagini recente » Cod sursa (job #3003627) | Cod sursa (job #2346573) | Cod sursa (job #550412) | Cod sursa (job #517666) | Cod sursa (job #2660674)
#include <fstream>
#include <vector>
#include <bitset>
#include <set>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
set<int> mySet;
int n, x, sol, v[100005];
vector<int> lessPrime(int x) {
bitset<1000005> b;
vector<int> output;
for(int d = 2; d * d <= x; ++d) {
if(x % d == 0) {
for(int j = d; j <= x; j += d) {
b[j] = 1;
}
int p = x / d;
for(int j = p; j <= x; j += p) {
b[j] = 1;
}
}
}
for(int i = 2; i < x; ++i) {
if(!b[i]) output.push_back(i);
}
return output;
}
int main() {
f >> n;
for(int i = 1; i <= n; ++i) {
f >> v[i];
mySet.insert(v[i]);
}
for(int i = 1; i <= n; ++i) {
vector<int> primes = lessPrime(v[i]);
for(int j = 0; j < primes.size(); ++j) {
if(mySet.find(primes[j]) != mySet.end()) {
sol++;
}
}
}
g << sol << '\n';
return 0;
}