Cod sursa(job #119997)
| Utilizator | Data | 3 ianuarie 2008 21:54:55 | |
|---|---|---|---|
| Problema | Sum | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <stdio.h>
int phi[100000],x,n,nmax,a[100000];
int phii(int N) {
int i;
for (int i = 1; i <= N; ++i)
phi[i] = i-1;
for (int i = 2; i <= N; ++i)
for (int j = 2*i; j <= N; j += i)
phi[j] -= phi[i];
}
int main() {
int i;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d",&n);
for (i=1 ; i <= n;i++) {
scanf("%d",&a[i]);
if (a[i]>nmax)
nmax = a[i];
}
phii(nmax);
for (i=1; i<=n; i++)
if (a[i])
printf("%d\n",2*phi[a[i]]*a[i]);
}
