Функція fusc

Матеріал з testwiki
Версія від 21:40, 15 серпня 2021, створена imported>Lxlalexlxl
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Функція 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), а відповідність

nfusc(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(32n)=2.

Значення fusc(n) дорівнює кількості всіх непарних чисел Стірлінга другого роду вигляду S2(n+1,2r+1), а fusc(n+1) дорівнює кількості всіх непарних біноміальних коефіцієнтів вигляду (nrr), де 02r<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

Примітки

Шаблон:Примітки

Див. також

Посилання