Функція Ейлера
Визначення
Функція Ейлера (інколи позначається як або ) - це кількість чисел від до , взаємно простих з . Іншими словами, це кількість таких чисел у відрізку , для яких найбільший спільний дільник з рівний одиниці.
Декілька перших значення цієї функції (A000010 в енциклопедії OEIS):
Властивості
Трьох наступних властивостей функції Ейлера достатньо, щоб навчитися обчислювати її для будь-яких чисел:
Якщо - просте число, то .
Оскільки будь-яке число, крім самого , взаємно просте з ним.
Якщо - просте, - натуральне число, то .
Оскільки з числом не взаємно прості тільки числа виду , яких штук.
Якщо і взаємно прості, то ("мультиплікативність" функції Ейлера).
Цей факт слідує з китайської теореми про остачі. Розглянемо довільне число . Позначимо через і залишки від ділення на і відповідно. Тоді взаємно просте з тоді і тільки тоді, коли взаємно просте з і з окремо, або, що означає взаємно просте з , та взаємно просте з . Застосовуючи китайську теорему про остачі, отримаємо, що будь-якій парі чисел і взаємно однозначно відповідає число , що і завершує доведення.
Звідси можна отримати функцію Ейлера для будь-якого через його факторизацію (розкладання на прості множники):
якщо
(де всі - прості), то
Реалізація
Код, що обчислює функцію Ейлера, факторизуючи число за :
int phi(int n) {
int res = n;
for (int i = 2; i*i <= n; i++) {
if (n % i == 0) {
while (n % i == 0) {
n /= i;
}
res -= res / i;
}
}
if (n > 1) {
res -= res / n;
}
return res;
}
Ключовим моментом при обчисленні функції Ейлера є знаходження факторизації числа . Її можна знайти за час, значно менший : див. Ефективні алгоритми факторизації.
Застосування
Найважливіша і найвідоміша властивість функції Ейлера виражається у теоремі Ейлера:
де і взаємно прості.
Зокрема, коли просте, теорема Ейлера перетворюється у так звану малу теорему Ферма:
Теорема Ейлера достатньо часто зустрічається на практиці, наприклад, див. Обернений елемент в кільці за модулем.