Пусть σ ( n ) — сумма положительных делителей n, а gcd ( a , b ) — наибольший общий делитель a и b .
Формируем матрицу M размером n на n , элемент ( i, j ) которой равен σ (gcd ( i , j )). Тогда определитель M равен n !
Следующий код показывает, что теорема верна для нескольких значений n, и показывает, как выполнить некоторые общие вычисления в теории чисел в SymPy.
from sympy import gcd, divisors, Matrix, factorial
def f(i, j):
return sum( divisors( gcd(i, j) ) )
def test(n):
r = range(1, n+1)
M = Matrix( [ [f(i, j) for j in r] for i in r] )
return M.det() - factorial(n)
for n in range(1, 11):
print test(n)
Как и ожидалось, тестовая функция возвращает нули.
Если заменить функцию а выше, т , где τ ( п ) является число положительных делителей п , соответствующий определитель 1. Чтобы проверить это, заменить sumна lenв определении fи заменить factorial(n)на 1.
Если вам интересно, оба результата являются частными случаями следующей более общей теоремы. Я не знаю, чья это теорема. Я нашел это здесь .
Для любой арифметической функции f ( m ) пусть g ( m ) определена для всех натуральных чисел m как
Пусть M — квадратная матрица порядка n с элементом ij f (gcd ( i , j )). потом
Здесь μ — функция Мёбиуса . Два указанных выше частных случая соответствуют g ( m ) = m и g ( m ) = 1.