Cod sursa(job #942154)

Utilizator ShadoWolfCodrut Constantin Gusoi ShadoWolf Data 21 aprilie 2013 00:34:54
Problema Sum Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <limits>
using namespace std;

ifstream in("sum.in");
ofstream out("sum.out");

void sumeaza(long x);
long cmmdc(long a,long b);

int main()
{
	int n,c;
	in>>n;
	in.ignore(numeric_limits<streamsize>::max(),'\n');
	for(int i=0;i<n;++i)
	{
		in>>c;
		in.ignore(numeric_limits<streamsize>::max(),'\n');
		sumeaza(c);
	}
	in.close();
	out.close();
	return 0;
}

void sumeaza(long x)
{
	long long sum=0;
	const long N=100001;
	long phi[N+1];
	for (int i=1;i<=N;i++) phi[i]=i;
	for (int i=2;i<=N;i++)
		if (phi[i]==i)
			for (int j=i;j<=N;j+=i) phi[j] /=i, phi[j] *= (i-1);
	sum=2*phi[x]*x;
	out<<sum<<"\n";
}

 
long cmmdc(long a,long b)
{
    int r;
    while (b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}