Напишите программу для вычисления остатка от деления на 1 00 000 007 значения функции Эйлера от выбранного

Напишите программу для вычисления остатка от деления на 1 00 000 007 значения функции Эйлера от выбранного биномиального коэффициента (выбрать k элементов из n). Впишите в ответ одно число - результат при n= 202120, k=2021.
Изумрудный_Пегас_8053

Изумрудный_Пегас_8053

Для вычисления остатка от деления на \(100000007\) значения функции Эйлера от выбранного биномиального коэффициента можно воспользоваться свойствами арифметики остатков.

Для начала, нам понадобится формула для вычисления функции Эйлера. Функция Эйлера \(\phi(n)\) определяется как количество чисел, не превосходящих \(n\) и взаимно простых с \(n\). Если \(n\) не имеет простых множителей повторяющихся более одного раза, то формула для \(\phi(n)\) может быть выражена через простые множители \(p_1, p_2, \ldots, p_k\) числа \(n\) следующим образом:

\[\phi(n) = n \left(1 - \frac{1}{p_1}\right) \left(1 - \frac{1}{p_2}\right) \ldots \left(1 - \frac{1}{p_k}\right)\]

Для вычисления биномиального коэффициента \(C(n, k)\), который представляет собой количество комбинаций из \(n\) элементов по \(k\) элементов, можно использовать формулу:

\[C(n, k) = \frac{n!}{k!(n-k)!}\]

Теперь, имея эти формулы, мы можем перейти к написанию программы. Воспользуемся языком программирования Python.

python
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n-1)

def euler_phi(n):
result = n
i = 2
while i * i <= n:
if n % i == 0:
while n % i == 0:
n //= i
result -= result // i
i += 1
if n > 1:
result -= result // n
return result

def binomial_coefficient(n, k):
return factorial(n) // (factorial(k) * factorial(n-k))

n = 202120
k = 2021

euler_value = euler_phi(binomial_coefficient(n, k))
remainder = euler_value % 100000007

print(remainder)


Данная программа вычисляет значение функции Эйлера от биномиального коэффициента \(C(202120, 2021)\) и затем находит остаток от деления этого значения на \(100000007\).
Знаешь ответ?
Задать вопрос
Привет!
hello