Позвольте z
быть комплексное число. z
является n-ым примитивным корнем единства, если для определенного положительного целого числа n
и для любого положительного целого числа k < n
.
Вызов
Напишите полную программу или функцию, которая, учитывая положительное целое число в n
качестве входных данных, выводит все n-е примитивные корни единства. Вы можете вывести их в полярной форме ( e^θi
или e^iθ
аргумент должен быть десятичным с не менее чем двумя десятичными разрядами) или прямоугольной форме ( a + bi
или аналогичной форме, действительные и мнимые части также должны быть десятичными), и они могут выводиться в списке вашего языка / формат массива или в виде строки с числами, разделенными пробелами или переводами строки. Встроенные модули, которые вычисляют n-е корни единства или n-е первообразные корни единства, не допускаются.
Это код-гольф , поэтому выигрывает самый короткий код в байтах.
Образцы входов и выходов
6 -> e^1.05i, e^-1.05i # polar form
3 -> e^2.094395i, e^-2.094395i # any number of decimal places is OK as long as there are more than 2
8 -> 0.707 + 0.707i, 0.707 - 0.707i, -0.707 + 0.707i, -0.707 - 0.707i # rectangular form
1 -> 1 + 0i # this is OK
1 -> 1 # this is also OK
4 -> 0 + i, 0 - i # this is OK
4 -> i, -i # this is also OK
источник
Ответы:
Желе,
119 байтСпасибо @Dennis за -2 байта!
Я хотел сгенерировать числа, взаимно простые с N, сложив разность множеств по всем корням единицы от 1 до N, но я не мог понять, как именно так я использовал метод @ Dennis.
Попробуй это здесь. Действительно в этой версии Jelly, но может отсутствовать в версиях после 1 февраля 2016 г.источник
Желе , 14 байт
Попробуйте онлайн!
Как это работает
z = e 2tπi является n- м корнем 1 тогда и только тогда, когда t = k / n для некоторого целого числа k .
г является примитивным тогда и только тогда , когда к и п взаимно просты.
источник
Юлия, 48 байт
Это лямбда-функция, которая принимает целое число и возвращает массив сложных чисел с плавающей точкой. Чтобы вызвать его, присвойте его переменной. Он использует тот же подход, что и ответ Денниса «Желе».
Ungolfed:
источник
Рубин, 46 байт
Это не «язык игры в гольф» реализации ответа Желе Томаса Ква .
Ungolfed:
источник
MATL , 27 байт
Использует релиз (9.3.1) , который является более ранним, чем этот вызов.
Попробуйте онлайн!
(Онлайн-компилятор использует более новую версию, но код запускается в версии 9.3.1 и дает тот же результат)
объяснение
Есть три основных шага:
0
,1
, ...,N-1
, соответствующие всем корням.N
.Код:
источник
Matlab 49 байт
Не получил задание в первый раз, но теперь вот оно. Выходы следующие:
источник
ES6, 96 байт
Полярная форма была самым коротким выходом.
источник
PARI / GP, 41 байт
Довольно просто: найдите числа от 1 до n, которые взаимно просты с n, затем
Должен быть какой-то более короткий путь, но это было лучшее, что я мог найти.
источник