Pagini recente » Cod sursa (job #1719165) | Cod sursa (job #426848) | Cod sursa (job #1825573) | Cod sursa (job #564740) | Cod sursa (job #460044)
Cod sursa(job #460044)
#include <stdio.h>
#include <string.h>
#define Nmax 1024
#define ll long long
int n, a[32], dim, lim, ret;
ll back(int lvl, int prod) {
if (lvl > dim)
return (ll)lim*(ll)(lim/prod+1)/2;
return back(lvl+1,prod) - back(lvl+1,prod*a[lvl]);
}
int main() {
freopen("sum.in", "r", stdin);
freopen("sum.out", "w", stdout);
int t;
scanf("%d", &t);
a[0] = 1;
while (t--) {
scanf("%d", &n);
lim = n << 1;
dim = -1;
int i;
for (i = 2; i*i <= n; ++i)
if (n % i == 0) {
a[++dim] = i;
while (n % i == 0)
n /= i;
}
if (n > 1)
a[++dim] = n;
printf("%lld\n", back(0,1));
}
return 0;
}