👤

Să se scrie funcția cu următorul antet:

int Phi(int n)

Funcția primește ca parametru un număr natural n și trebuie să returneze numărul de numere naturale nenule prime cu n și strict mai mici decât n.

Restricții și precizări

2 ≤ n ≤ 2.000.000.000
Numele funcției este Phi.
Spunem că un număr natural x este prim cu n dacă cmmdc(x, n) = 1.


Eu am rezolvat problema in mai multe moduri, insa depaseste limita de timp la unele probe de fiecare data si nu stiu cum sa o mai abordez.


Răspuns :

#include <iostream>

#include <algorithm>

int Phi(int n)

{

// forma recursiva este ineficienta

int result = 1;

for (int i = 2; i < n; ++i)

if(std::__gcd(i, n) == 1)

++result;

return result;

}