Pagini recente » Cod sursa (job #380932) | Cod sursa (job #1767403) | Cod sursa (job #1973663) | Cod sursa (job #102050) | Cod sursa (job #2985045)
#include <fstream>
#include <vector>
#include <cmath>
///fara numere mari
#define ll long long
using namespace std;
ifstream f("indep.in");
ofstream g("indep.out");
int n,a[1005],x,ciur[1005];
ll d[1005];
int ex[1000];
vector<int>fct;
int main()
{
f>>n;
for(int i=2;i*i<=1000;i++)
if(ciur[i]==0)
for(int j=i*i;j<=1000;j+=i)
ciur[j]=true;
for(int i=1;i<=n;i++)
{
f>>x;
for(int j=1;j*j<=x;j++)
if(x%j==0)
a[j]++,a[x/j]++;
if(sqrt(x)==int(sqrt(x)))
a[int(sqrt(x))]--;
}
for(int i=1;i<=1000;i++)
if(a[i])
d[i]=(1<<a[i])-1;
for(int i=2;i<=1000;i++)
if(a[i]&&ciur[i]==0)
fct.push_back(i);
int all=(1<<fct.size());
ll ans=d[1];
for(int i=1;i<all;i++)
{
int bits=0;
ll r=1;
for(int j=0;j<fct.size();j++)
if(i&(1<<j))
{
bits++;
r*=fct[j];
}
if(bits%2)
ans-=d[r];
else
ans+=d[r];
}
g<<ans;
return 0;
}