Cod sursa(job #3329596)

Utilizator Pop_EmilPal Tamas Pop_Emil Data 14 decembrie 2025 13:51:25
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
using namespace std;

FILE *in = fopen("fractii.in", "r"), *out = fopen("fractii.out", "w");
int n, prim[1000005], phi[1000005], res = 1;

int main()
{
    fscanf(in, "%d", &n);

    for(int i = 1; i <= n; ++i)
        prim[i] = 1;
    for(int i = 2; i <= n; ++i)
        for(int j = 2*i; j <= n; j += i)
            prim[j] = 0;

    for(int i = 1; i <= n; ++i)
        phi[i] = i;

    for(int pi = 2; pi <= n; ++pi){
        if(prim[pi]){
            for(int j = pi; j <= n; ++j){
                if(j % pi == 0){
                    phi[j] = phi[j] * (pi - 1) / pi;
                    //printf("- %d %d %d - ", pi, j, phi[j]);
                }
            }
        }
    }

    for(int i = 2; i <= n; ++i)
        res += 2 * phi[i];
    fprintf(out, "%d", res);
    return 0;
}