Pagini recente » Cod sursa (job #787958) | Cod sursa (job #1602366) | Cod sursa (job #2375546) | Cod sursa (job #2391595) | Cod sursa (job #2443471)
#include <fstream>
using namespace std;
ifstream f ("sum.in");
ofstream g ("sum.out");
int v[100001];
long long primes[100001]; ///primes[i] = suma nr prime Y cu Y<=2*X
void indEuler (int n)
{
int i, j;
///initializam primes[i] cu suma (1+2+3+...+i-1) - i
for (i=2; i<=n; i++)
primes[i] = 2*i * (2*i-1)/2 - i;
for (i=2; i<=n; i++)
for (j=2*i; j<=n; j+=i)
primes[j] -= (primes[i]/i*j);
}
int main ()
{
int n, i;
int maxim = -1;
f>>n;
for (i=0; i<n; i++)
{
f>>v[i];
if (v[i]>maxim)
maxim = v[i];
}
indEuler(maxim);
for (i=0; i<n; i++)
g<<primes[v[i]]<<'\n';
f.close(); g.close(); return 0;
}