Pagini recente » Cod sursa (job #238022) | Cod sursa (job #3157455) | Cod sursa (job #1469039) | Cod sursa (job #607412) | Cod sursa (job #183220)
Cod sursa(job #183220)
#include<stdio.h>
#include<math.h>
int l,a[1010],ok2,nrf,aux,ok,d,m,p,i,v[1110],max,j;
char ap[1111],t[1111];
int P[1111];
long long A,res,n;
int main(){
FILE *f=fopen("indep.in","r");
fscanf(f,"%lld",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
if(v[i]>max)
max=v[i];
ap[v[i]]=1;
}
fclose(f);
for(i=1;i<=max;i++){
for(j=i;j<=max;j+=i){
if(ap[j])
a[i]++;
}
}
// for(i=2;i<=(int)(sqrt(max));i++){
// if(!t[i])
// for(j=i+i;j<=(int)(sqrt(max));j+=i)
// t[j]=1;
// }
for(i=2;i<=max;i++){
if(!t[i])
for(j=i+i;j<=max;j+=i)
t[j]=1;
}
p=0;
for(i=2;i<=max;i++)
if(!t[i]){
p++;
P[p]=i;
}
for(i=1;i<=max;i++){
if(a[i]){
nrf=0;
aux=i;
ok=1;
d=1;
m=0;
while(aux!=1&&d<=p){
ok2=1;
m=0;
while(!(aux%P[d])){
if(ok2)
nrf++;
m++;
aux/=P[d];
}
if(m>1){
ok=0;
break;
}
d++;
}
if(ok){
if(aux>1)
nrf++;
if(nrf%2==1){
A=1;
for(l=1;l<=a[i];l++)
A*=2;
A--;
A-=a[i];
res-=A;
}
else{
A=1;
for(l=1;l<=a[i];l++)
A*=2;
A--;
A-=a[i];
res+=A;
}
}
}
}
FILE *g=fopen("indep.out","w");
fprintf(g,"%lld",res);
fclose(g);
return 0;
}