Функция fusc

Материал из testwiki
Перейти к навигации Перейти к поиску

Функция fusc — это целочисленная функция на множестве натуральных чисел, определённая Э. Дейкстрой следующим образом[1]:

fusc⁡(k)={1,k=1;fusc⁡(n),k=2n,n∈ℕ;fusc⁡(n)+fusc⁡(n+1),k=2n+1,n∈ℕ.

Последовательность, генерируемая этой функцией, имеет вид

1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4, …

Это диатомическая последовательность Штерна (Шаблон:OEIS). Функция fusc связана с последовательностью Калкина — Уилфа, а именно n-й член последовательности Калкина — Уилфа равен fusc⁡(n)/fusc⁡(n+1), а соответствие

n↦fusc⁡(n)fusc⁡(n+1),n=1,2,3,…

является взаимно однозначным соответствием между множеством натуральных чисел и множеством положительных рациональных чисел.

Свойства

Пусть f1=fusc⁡(n1) и f2=fusc⁡(n2), тогда[1]:

  • если существует N такое, что n1+n2=2N, то f1 и f2 взаимно просты;
  • если f1 и f2 взаимно просты, то существуют n1, n2 и N такие, что n1+n2=2N.

Значение функции не изменится, если в двоичном представлении аргумента инвертировать все внутренние цифры[2]. Например, fusc⁡(19)=fusc⁡(29), т. к. 1910 = 100112 и 2910 = 111012.

Значение функции также не изменится, если в двоичном представлении аргумента записать все цифры в обратном порядке[2]. Например, fusc⁡(19)=fusc⁡(25), т. к. 1910 = 100112 и 2510 = 110012.

Значение fusc⁡(n) чётно тогда и только тогда, когда n делится на 3[2].

Функция обладает свойствами

fusc⁡(2n)=1,
fusc⁡(3⋅2n)=2.

Значение fusc⁡(n) равно количеству всех нечётных чисел Стирлинга второго рода вида S2(n+1,2r+1), а fusc⁡(n+1) равно количеству всех нечётных биномиальных коэффициентов вида (n−rr), где 0⩽2r<n[3].

Вычисление

Кроме рекурсивного вычисления функции fusc по определению, существует простой итеративный алгоритм[1]:

fusc(N):
    n, a, b = N, 1, 0
    пока n ≠ 0:
        если n чётное:
            a, n = a + b, n / 2
        если n нечётное:
            b, n = a + b, (n - 1) / 2
    fusc(N) = b

Примечания

Ссылки

См. также