Tocjent jest to funkcja, która przyporządkowuje każdej liczbie naturalnej liczbę liczb względnie z nią pierwszych. Warunkiem jest, aby znalezione liczby względnie pierwsze były nie większe od argumentu funkcji. Funkcja jest oznacza przez . W celu obliczenia funkcji dla dowolnego argumentu n można się posłużyć poniższym wzorem:
W podanym wzorze liczby są wszystkimi, różnymi czynnikami pierwszymi liczby n.
Najprostszy sposób wyliczenia funkcji dla dowolnego argumentu jest znalezienie wszystkich liczb względnie pierwszych z zakresu [1, n]. Dokładny opis znajdowania liczb względnie pierwszych można przeczytać tutaj. W tym przypadku wystarczy funkcja znajdowania NWD:
Jeśli funkcja nwd() zwróci dla i-tej liczby oraz n 1 to liczby będą względnie pierwsze.
(1.) Funkcji phi() przyjmuje jeden argument n. (2.) Inicjalizacja licznika i ustawienie wartości początkowej 0. (3.) Dla każdej liczby z zakresu [1, n]: (4.) sprawdź czy jest względnie pierwsza z n i (5.) zwiększ licznik. Po zakończeniu pętli for (7.) zwróć wynik licznik.
Funkcję Tocjent można też napisać również w wersji iteracyjnej, ale wykorzystując wzór. W tym celu należy znaleźć z ilu różnych liczb pierwszych składa się liczba n. Zadanie to realizuje poniższy kod:
(2.) Początkowo suma wynosi n. Dopiero po znalezieniu liczby pierwszej suma będzie mnożona. (3.) Najmniejsza liczba pierwsza to 2. (3.) Jeśli liczba n jest różna od 1 to: (4. - 5.) znajdź kolejny dzielnik liczby, (6.) pomnóż sumę przez kolejną wartość i (7. - 8.) usuń wszystkie wystąpienia znalezionego czynnik dzielnik. Ze względu na fakt, że funkcja za każdym razem pozbywa się wszystkich wystąpień dzielnik gwarantowane jest, że następny dzielnik będzie liczbą pierwszą. Na koniec (10.) zwracana jest część całkowita zmiennej suma.
Obydwie implementacji funkcji phi() można przetestować przy pomocy poniższej funkcji main():
Napisz program, który wczyta od użytkownika trzy liczby: a, b i s. Program powinien wypisać wszystkie argumenty tj. liczby naturalne z zakresu [a, b], których wartość funkcji phi(n) wynosi s.
Przykładowo dla danych:
Program wypisze na ekran: