Pagini recente » Cod sursa (job #1353878) | Cod sursa (job #267034) | Cod sursa (job #1905029) | Cod sursa (job #2597609) | Cod sursa (job #114742)
Cod sursa(job #114742)
#include <stdio.h>
#define N_MAX 100001
int N,M,MAX,res;
char v[1000001];
void citire(){
int i,x;
FILE *fin=fopen("pairs.in","r");
fscanf(fin,"%d",&N);
for (i=1;i<=N;i++){
fscanf(fin,"%d",&x);
v[x]=1;
if (x>MAX)
MAX=x;
}
fclose(fin);
}
void prelucrare(){
int i,x,p,nr,j,bun;
for (i=2;i<=MAX;i++){
x=0;
for (j=i;j<=MAX;j+=i)
if (v[j])
x++;
nr=0,p=i,j=2,bun=1;
if (x){
while ((p>1)&&bun){
if (p%j==0){
p/=j;
nr++;
if (p%j==0)
bun=0;
}
else
j++;
}
if (bun)
if (nr%2)
res+=x*(x-1)/2;
else
res-=x*(x-1)/2;
}
}
res=N*(N-1)/2-res;
}
void afisare(){
FILE *fout=fopen("pairs.out","w");
fprintf(fout,"%d\n",res);
fclose(fout);
}
int main(){
citire();
prelucrare();
afisare();
return 0;
}