Cod sursa(job #942151)

Utilizator ShadoWolfCodrut Constantin Gusoi ShadoWolf Data 21 aprilie 2013 00:31:16
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=100000;
	long phi[N+1];

	for (long i = 1; i <= N; ++i)
		phi[i] = i-1;
	for (long i = 2; i <= N; ++i)
		for (long j = 2*i; j <= N; j += i)
        phi[j] -= phi[i];
	out<<2*phi[x]*x<<"\n";
}

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