Фон (перехід до визначень)
Ейлер довів гарну теорему про складні числа: e ix = cos (x) + i sin (x).
Це робить теорему де Моєра легко довести:
(e ix ) n = e i (nx)
(cos (x) + i sin (x)) n = cos (nx) + i sin (nx)
Ми можемо побудувати складні числа за допомогою двовимірної евклідової площини, при цьому горизонтальна вісь представляє реальну частину, а вертикальна вісь представляє уявну частину. Таким чином, (3,4) відповідатиме комплексу числа 3 + 4i.
Якщо ви знайомі з полярними координатами, (3,4) буде (5, арктан (4/3)) в полярних координатах. Перше число, r - відстань точки від початку початку; друге число θ - кут, виміряний від позитивної осі x до точки, проти годинникової стрілки. В результаті 3 = r cosθ і 4 = r sinθ. Тому ми можемо записати 3 + 4i як r cosθ + ri sinθ = r (cosθ + i sinθ) = re iθ .
Розв’яжемо комплексне рівняння z n = 1, де n - натуральне число.
Нехай z = re iθ . Тоді z n = r n e inθ . Відстань z n від початку є r n , а кут - nθ. Однак ми знаємо, що відстань 1 від початку дорівнює 1, а кут - 0. Отже, r n = 1 і nθ = 0. Однак якщо ви обертаєтесь на 2π більше, ви все одно опинитесь в тій же точці, оскільки 2π - це просто повне коло. Тому r = 1 і nθ = 2kπ, даючи нам z = e 2ikπ / n .
Повторюємо своє відкриття: рішення z n = 1 є z = e 2ikπ / n .
Поліном може бути виражений у його коренях. Наприклад, коріння x 2 -3x + 2 дорівнюють 1 і 2, тому x 2 -3x + 2 = (x-1) (x-2). Аналогічно з нашого відкриття вище:
Однак цей продукт, безумовно, містив коріння інших російських. Наприклад, візьмемо n = 8. Коріння z 4 = 1 також будуть включені всередину коренів z 8 = 1, оскільки z 4 = 1 означає z 8 = (z 4 ) 2 = 1 2 = 1. Візьмемо n як 6 як приклад. Якщо z 2 = 1, то ми також мали б z 6 = 1. Так само, якщо z 3 = 1, то z 6 = 1.
Якщо ми хочемо витягти коріння, унікальні для z n = 1, нам знадобиться k і n, щоб поділити спільний дільник, окрім 1. Або, якщо вони мають спільний дільник d, де d> 1, то z було б (k / г) -й корінь z n / d = 1. Використовуючи вищевказану техніку для написання многочлена з точки зору його коренів, отримуємо многочлен:
Зауважимо, що цей многочлен виконується шляхом видалення коренів z n / d = 1, причому d є дільником n. Ми стверджуємо, що многочлен вище має цілі коефіцієнти. Розглянемо LCM поліномів у вигляді z n / d -1, де d> 1 і d ділить n. Коріння LCM - це саме ті корені, які ми хочемо видалити. Оскільки кожен компонент має цілочисельні коефіцієнти, LCM має також цілі коефіцієнти. Оскільки LCM ділить z n -1, коефіцієнт повинен бути многочленом з цілим числовим коефіцієнтом, а коефіцієнт - поліномом вище.
Коріння z n = 1 усі мають радіус 1, тому вони утворюють коло. Поліном являє собою унікальні для n точки кола, тому в певному сенсі многочлени утворюють розділ кола. Тому поліном вище є n-м циклотомним многочленом. (cyclo- = коло; tom- = вирізати)
Визначення 1
Позначений n-й циклотомний многочлен - це унікальний многочлен з цілими коефіцієнтами, що ділить x n -1, але не x k -1 на k <n.
Визначення 2
Циклотомні многочлени - це набір многочленів, по одному на кожне додатне ціле число, таким чином, що:
де k | n означає k ділить n.
Визначення 3
N-й циклотомний многочлен - це многочлен x n -1, поділений на LCM поліномів у вигляді x k -1, де k ділить n і k <n.
Приклади
- Φ 1 (x) = x - 1
- Φ 2 (x) = x + 1
- Φ 3 (x) = x 2 + x + 1
- Φ 30 (x) = x 8 + x 7 - x 5 - x 4 - x 3 + x + 1
- Φ 105 (x) = x 48 + x 47 + x 46 - x 43 - x 42 - 2x 41 - x 40 - x 39 + x 36 + x 35 + x 34 + x 33 + x 32 + x 31 - x 28 - х 26 - х 24 - х 22 - х 20 + х 17 + х 16 + х 15 + х 14 + х 13 + х 12 - х9 - х 8 - 2х 7 - х 6 - х 5 + х 2 + х + 1
Завдання
Давши додатне ціле число n
, поверніть n
-мий циклотомний многочлен, як визначено вище, у розумному форматі (тобто список переліку коефіцієнтів дозволений).
Правила
Ви можете повертати числа з плаваючою точкою / комплексними, доки вони округляються до потрібного значення.
Оцінка балів
Це код-гольф . Найкоротша відповідь у байтах виграє.