Pagini recente » Cod sursa (job #2689724) | Cod sursa (job #2846584) | Cod sursa (job #708724) | Cod sursa (job #538365) | Cod sursa (job #918542)
Cod sursa(job #918542)
#include <fstream>
#include <vector>
#define pb push_back
#define N 1000000
using namespace std;
bool neprim[N+10];
vector<int>divs[N+10];
int n, i, x, m, conf, prod, j, nr[N+10];
long long rez;
void ciur()
{
int i, j;
for(i = 2; i <= N; i++)
if(!neprim[i])
{
divs[i].pb(i);
for(j = 2*i; j <= N; j += i)
{
neprim[j] = 1;
divs[j].pb(i);
}
}
}
int main()
{
ifstream fi("pairs.in");
ofstream fo("pairs.out");
fi >> n;
ciur();
for(i = 1; i <= n; i++)
{
fi >> x;
m = divs[x].size();
for(conf = 1; conf < (1<<m); ++conf)
{
prod = 1;
for(j = 0; j < m; j++)
if(((1<<j) & conf) > 0) prod *= divs[x][j];
nr[prod]++;
}
}
for(i = 1; i <= N; i++)
{
m = divs[i].size();
if(m%2) rez += nr[i]; else rez -= nr[i];
}
fo << rez << "\n";
return 0;
}