Pagini recente » Cod sursa (job #18016) | Cod sursa (job #552429) | Cod sursa (job #2332037) | Cod sursa (job #1656967) | Cod sursa (job #891019)
Cod sursa(job #891019)
#include <cstdio>
using namespace std;
int main()
{
//Deschiderea fisierelor de intrare si iesire
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
//Vectorul ce va contine valorile Functiei Totient a lui Euler
int phi[100005];
//n-ul si x-ul din enunt, i,j - contoare
int n,x;
int i,j;
//Initial, toate numerele sunt prime
for(i=2;i<=100000;i++)
phi[i]=i;
//Se foloseste formula generala de calcul a functiei Totient impreuna cu ideea Ciurului lui Eratostenes
for(i=2;i<100000;i++)
if(phi[i]==i)
for(j=i;j<=100000;j+=i)
phi[j]=(phi[j]*(i-1))/i;
//Se citeste n
scanf("%d",&n);
//Se raspunde la fiecare intrebare in parte, folosind o formula usor de determinat matematic
for(i=0;i<n;i++)
{
scanf("%d",&x);
printf("%lld\n",((long long int)x*(long long int)phi[x])*2);
}
return 0;
}