Pagini recente » Cod sursa (job #523316) | Cod sursa (job #3032576) | Cod sursa (job #121542) | Cod sursa (job #3041301) | Cod sursa (job #109956)
Cod sursa(job #109956)
#include<fstream.h>
#include<math.h>
#define dim 100000
ifstream f("pairs.in");
ofstream g("pairs.out");
unsigned long n,j,v[dim],sol;
int viz[dim];
void rade(unsigned long i,unsigned long d)
{while(i<=n)
{if((v[i]%d)==0)
{while(!(v[i]%d))v[i]=v[i]/d;
if(!viz[i])
{viz[i]++;j++;}
}
i++;
}
}
void rez(unsigned long i)
{unsigned long jum,d;
j++;
if(!(v[i]%2))
{while(!(v[i]%2))v[i]=v[i]/2;
rade(i+1,2);
}
jum=sqrt(v[i]);
for(d=3;d<=jum;d+=2)
if((v[i]%d)==0)
{while(!(v[i]%d))v[i]=v[i]/d;
rade(i+1,d);
}
if(v[i]>1)rade(i+1,v[i]);
}
unsigned long comb(unsigned long x)
{if(x%2) return ((x-1)/2*x);
return (x/2*(x-1));
}
int main()
{f>>n;
unsigned long i,ii;
for(i=1;i<=n;i++)
f>>v[i];
f.close();
sol=comb(n);
for(i=1;i<n;i++)
{j=0;
rez(i);
sol-=comb(j);
for(ii=i+2;ii<=n;ii++)
viz[ii]=0;
}
g<<sol<<'\n';
g.close();
return 0;
}