Cod sursa(job #2513718)
| Utilizator | Data | 23 decembrie 2019 17:37:34 | |
|---|---|---|---|
| Problema | Fractii | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.55 kb |
#include <fstream>
unsigned N;
unsigned phi[1000001];
long long S = 1;
void computeTotient()
{
for (long i=1;i<=N;i++) phi[i]=i;
for (long i=2;i<=N;i++)
if (phi[i]==i)
for (long j=i;j<=N;j+=i) phi[j] /=i, phi[j] *= (i-1);
}
int main()
{
std::ifstream fisierIN("fractii.in");
fisierIN >> N;
fisierIN.close();
computeTotient();
for (unsigned i = 2; i <= N; ++i)
{
S += 2 * phi[i];
}
std::ofstream fisierOUT("fractii.out");
fisierOUT << S;
fisierOUT.close();
return 0;
}