Pagini recente » Cod sursa (job #1934838) | Cod sursa (job #2907891) | Cod sursa (job #2769945) | Cod sursa (job #1728578) | Cod sursa (job #215114)
Cod sursa(job #215114)
#include<stdio.h>
#define N 1007
int v[N],w[N],x[N];
void ciur(){
int i,j,k;
for(i=2;i<N;++i){
if(!w[i])
for(j=i;j<=N;j+=i)
++w[j];
}
for(i=2;(k=i*i)<N;++i)
if(w[i]==1)
for(j=k;j<=N;j+=k)
w[j]=0;
}
void ciur2(){
//x[i]=cati multipli ai lui i sunt in multime
int i,j,k;
for(i=2;i<=N;++i)
if(w[i])
for(j=i+i;j<N;j+=i)
if(v[j])
++x[i];
}
/*
int cond(int x){
int i;
for(i=2;i*i<=x;++i)
if(!w[i])
return 1;
return 0;
}
*/
int main(){
int n,i,s=0,y;
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i){
scanf("%d",&y);
v[y]++;
}
ciur();
ciur2();
for(i=1;i<n;++i)
if(w[i]%2)
s+=(1<<x[i]);
else
s-=(1<<x[i]);
printf("%d\n",s+1);
fclose(stdin);
fclose(stdout);
return 0;
}