Pagini recente » Cod sursa (job #762207) | Cod sursa (job #2175552) | Cod sursa (job #784958) | Cod sursa (job #11159) | Cod sursa (job #169247)
Cod sursa(job #169247)
#include<stdio.h>
#define NMAX 10000L
int main()
{
unsigned long int n,x,y,i,v[NMAX],fp[100],k,d,j,sp,c,pfp;
unsigned long long int st;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%lu",&n);
for(i=0;i<n;i++) scanf("%lu",&v[i]);
for(i=0;i<n;i++){
x=v[i];
st=(unsigned long long)x*(2*x-1);
k=0;
if(x%2==0) {fp[k++]=2;while(x%2==0) x/=2;}
for(d=3;d<=x;d=d+2)
if(x%d==0) {fp[k++]=d;while(x%d==0) x/=d;}
for(j=0;j<k;j++){
c=v[i]/fp[j];
sp=fp[j]*c*(2*c-1);
st-=sp;
}
if(k>1){
pfp=1;
for(j=0;j<k;j++) pfp*=fp[j];
j=0;
while(pfp>1&&j<k-1){
c=v[i]/pfp;
sp=pfp*c*(2*c-1);
st+=sp;
pfp/=fp[j];
j++;
}
}
printf("%llu\n",st);
}
return 0;
}