Niech z
będzie liczbą zespoloną. z
jest n-tym pierwotnym pierwiastkiem jedności, jeśli dla pewnej dodatniej liczby całkowitej n
i dla dowolnej dodatniej liczby całkowitej k < n
.
Wyzwanie
Napisz pełny program lub funkcję, która, biorąc pod uwagę dodatnią liczbę całkowitą n
jako dane wejściowe, wyprowadza wszystkie n-te pierwotne pierwiastki jedności. Możesz wyprowadzać je w postaci biegunowej ( e^θi
lub e^iθ
argument powinien być dziesiętny z co najmniej 2 miejscami dziesiętnymi) lub prostokątnej ( a + bi
lub podobnej postaci, rzeczywiste i urojone części powinny być również dziesiętne), i mogą być wyprowadzane na liście twojego języka / format tablicy lub ciąg znaków z liczbami oddzielonymi spacjami lub znakami nowej linii. Wbudowane, które obliczają n-te pierwiastki jedności lub n-te prymitywne pierwiastki jedności są niedozwolone.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
Przykładowe wejścia i wyjścia
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
źródło
Odpowiedzi:
Galaretka,
119 bajtówDzięki @Dennis za -2 bajty!
Chciałem wygenerować koprime liczb do N, składając różnicę między pierwiastkami jedności od 1 do N, ale nie mogłem zrozumieć, w jaki sposób zastosowałem metodę @ Dennisa.
Wypróbuj tutaj. Obowiązuje w tej wersji Jelly, ale może nie być w wersjach po 1 lutego 2016 r.źródło
Galaretka , 14 bajtów
Wypróbuj online!
Jak to działa
z = e 2tπi jest n- tym pierwiastkiem z 1 wtedy i tylko wtedy, gdy t = k / n dla jakiejś liczby całkowitej k .
z jest prymitywne wtedy i tylko wtedy, gdy k i n są pierwszymi pierwszymi.
źródło
Julia, 48 bajtów
Jest to funkcja lambda, która przyjmuje liczbę całkowitą i zwraca tablicę złożonych liczb zmiennoprzecinkowych. Aby go wywołać, przypisz go do zmiennej. Wykorzystuje to samo podejście, co odpowiedź Dennisa „Galaretka”.
Nie golfowany:
źródło
Rubinowy, 46 bajtów
Jest to implementacja odpowiedzi Jelly Thomasa Kwa na język „golfowy” .
Nie golfowany:
źródło
MATL , 27 bajtów
Wykorzystuje wydanie (9.3.1) , które jest wcześniejsze niż to wyzwanie.
Wypróbuj online!
(Kompilator online używa nowszej wersji, ale kod działa w wersji 9.3.1 i daje ten sam wynik)
Wyjaśnienie
Istnieją trzy główne kroki:
0
,1
...N-1
, odpowiadające wszystkim korzeniom.N
.Kod:
źródło
Matlab 49 bajtów
Nie dostałem zadania za pierwszym razem, ale teraz jest. Dane wyjściowe są następujące:
źródło
ES6, 96 bajtów
Forma polarna była najkrótszą produkcją.
źródło
PARI / GP, 41 bajtów
Całkiem proste: znajdź liczby od 1 do n, które są pierwszymi cyframi do n, a następnie
Musi być krótsza droga, ale to było najlepsze, co mogłem znaleźć.
źródło