Cod sursa(job #2443471)

Utilizator MihaIonescuMihai Ionescu MihaIonescu Data 28 iulie 2019 11:16:20
Problema Sum Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#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;
}