Cod sursa(job #2539598)

Utilizator paxilionMircea Popescu paxilion Data 6 februarie 2020 00:25:14
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <array>
using namespace std;
bool rel_prim(int a, int b){
    int r = a % b;
    while (r){
        a = b;
        b = r;
        r = a % b;
    }
    return b == 1;
}
array<int, 1000000> phi;
int main()
{
//	freopen ("fractii.in","r",stdin);
//	freopen ("fractii.out","w",stdout);
    int n;
    scanf("%d", &n);
    int p = n;
    
    for (int i = 2; i < n; i ++)
        phi[i] = i;
    for (int i = 1; i < n; i ++)
        if (phi[i] == i){
            phi[i] --;
            for (int j = 2 * i; j < n; j += i)
                phi[j] = phi[j] / i * (i - 1);
        }
    for (int i = 2; i < n; i ++){
        p += (n - i) / i * phi[i];
        for (int j = 1; j <= n % i; j ++)
            if (rel_prim(j, i))
                p ++;
    }
    printf("%d", p);        
}