Производная функции является краеугольным камнем математики, техники, физики, биологии, химии и многих других наук. Сегодня мы собираемся вычислить что-то только косвенно связанное: арифметическую производную.
Определение
Арифметическая производная a(n)
или n'
определяется здесь ( A003415 ) рядом свойств, которые похожи на производную функции.
a(0) = a(1) = 0
,a(p) = 1
гдеp
любое простое число, иa(mn) = m*a(n) + n*a(m)
,
Третье правило основано на правиле продукта для дифференциации функций: для функций f(x)
и g(x)
, (fg)' = f'g + fg'
. Так с цифрами (ab)' = a'b + ab'
.
Также следует отметить, что с помощью этого простого отношения арифметическая производная может быть расширена до отрицательных чисел a(-n) = -a(n)
, входные данные могут быть отрицательными.
правила
- Напишите программу или функцию, которая, учитывая любое целое число
n
, возвращает арифметическую производную отn
. - Входы будут
-230 < n < 230
, чтобы избежать проблем с целочисленными размерами и числами, слишком большими, чтобы разумное количество времени. Ваш алгоритм все еще должен быть в состоянии теоретически рассчитать арифметическую производную чисел вне этого диапазона. - Разрешены встроенные функции для символической математики, простой факторизации и дифференцирования.
Примеры
> a(1)
0
> a(7)
1
> a(14) # a(7)*2 + a(2)*7 = 1*2 + 1*7 = 9
9
> a(-5) # a(-5) = -a(5) = -1
-1
> a(8) # a(8) = a(2**3) = 3*2**2 = 12
12
> a(225) # a(225) = a(9)*25 + a(25)*9 = 6*25 + 10*9 = 150 + 90 = 240
240
> a(299792458) # a(299792458) = a(2)*149896229 + a(7)*42827494 + a(73)*4106746 + a(293339)*1022 = 1*149896229 + 1*42827494 + 1*4106746 + 1*1022 = 149896229 + 42827494 + 4106746 + 1022 = 196831491
196831491
Как всегда, если проблема неясна, пожалуйста, дайте мне знать. Удачи и хорошего гольфа!
prime
в чемa(prime)
? Это просто простое число?