Пусть σ ( 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.