Pagini recente » Istoria paginii planificare/sedinta-20081010 | Diferente pentru utilizator/eugenstoica intre reviziile 17 si 18 | Diferente pentru utilizator/robybrasov intre reviziile 54 si 53 | Cod sursa (job #7714) | Cod sursa (job #328064)
Cod sursa(job #328064)
#include <cstdio>
#define DIM 200003
#define MAX 2<<18
int u[MAX],j,t[MAX],i,m,k;
long long s;
using namespace std;
int tot()
{
for(i=2; i<=DIM; ++i) t[i]=i;
for(i=2; i<=DIM; ++i)
{
if(u[i]==0)
{
for(j=i;j<=DIM;j+=i)
{
u[j]=1;
t[j]=t[j]-t[j]/i;
}
}
}
}
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d\n",&m);
tot();
while(m--)
{
scanf("%d\n",&k);
s=t[k]*2*k;
printf("%lld\n",s);
}
return 0;
}