Pagini recente » Cod sursa (job #1164614) | Statistici Toma Dan (dantoma) | Cod sursa (job #1513066) | Cod sursa (job #2007889) | Cod sursa (job #111567)
Cod sursa(job #111567)
#include <cstdio>
int main() {
freopen("sum.in","rt",stdin);
freopen("sum.out","wt",stdout);
int n;
scanf("%d",&n);
for (int k = 0; k<n; ++k) {
int x, nd = 0;
int d[8];
scanf("%d",&x);
int vx = x;
if (vx % 2 == 0) {
d[nd++] = 2;
for (; vx % 2 == 0; vx /= 2);
}
for (int i = 3; i <= vx; i += 2) {
if (vx % i == 0) {
d[nd++] = i;
for (; vx % i == 0; vx /= i);
}
}
int s = x*(2*x+1), lm = 1 << nd;
for (int i = 1; i<lm; ++i) {
int p = 1, np = 0;
for (int j = 0; j < nd; ++j)
if (i & (1<<j)) {
p *= d[j];
++np;
}
int r = (2*x)/p;
r = r*(r+1)/2;
r *= p;
if (np % 2 != 0) s -= r; else s += r;
}
printf("%d\n",s);
}
}