Pagini recente » Cod sursa (job #3031474) | Cod sursa (job #2696203) | Cod sursa (job #2976642) | Cod sursa (job #2276822) | Cod sursa (job #380606)
Cod sursa(job #380606)
#include <stdio.h>
#define NMAX 501
#define PMAX 1001
int n,v[NMAX],rez_f,div[NMAX],r;
char c[PMAX],marc[PMAX];
void ciur()
{
int i,j;
for (i=2; i*i<=1000; i++)
if (c[i]==false)
for (j=i*i; j<=1000; j+=i)
c[j]=true;
for (i=2; i<=1000; i++)
if (!c[i])
{
div[++r]=i;
marc[i]=1;
}
}
void read()
{
scanf("%d",&n);
int i;
for (i=1; i<=n; i++)
scanf("%d",&v[i]);
}
void update (int x,int y)
{
int i,nr=0;
for (i=1; i<=n; i++)
if (v[i]%x==0)
nr++;
if (y & 1)
rez_f+=(1<<nr)-1;
else
rez_f-=(1<<nr)-1;
}
void solve()
{
int i,j,x,nr;
char flag;
for (i=2; i<=1000; i++)
{
x=i; nr=0; flag=0;
for (j=1; j<=r; j++)
if (x%div[j]==0)
{
nr++;
while (x%div[j]==0)
{
x/=div[j];
if (x%div[j]==0)
flag=1;
}
}
if (!flag)
update (i,nr);
}
}
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
ciur();
read();
solve();
printf("%d\n",(1<<n)-1-rez_f);
return 0;
}