Jakiś czas temu mieliśmy poważne wyzwanie faktoryzacji , ale to wyzwanie ma prawie sześć lat i ledwo spełnia nasze obecne wymagania, więc uważam, że nadszedł czas na nowe.
Wyzwanie
Napisz program lub funkcję, która przyjmuje na wejściu liczbę całkowitą większą niż 1 i wyświetla lub zwraca listę swoich czynników pierwszych.
Zasady
- Dane wejściowe i wyjściowe można podawać dowolną standardową metodą i w dowolnym standardowym formacie.
- Dane wyjściowe muszą zawierać zduplikowane czynniki.
- Dane wyjściowe mogą być w dowolnej kolejności.
- Wartość wejściowa nie będzie mniejsza niż 2 lub większa niż 2 31-1 .
- Wbudowane są dozwolone, ale zalecane jest włączenie rozwiązania niewbudowanego.
Przypadki testowe
2 -> 2
3 -> 3
4 -> 2, 2
6 -> 2, 3
8 -> 2, 2, 2
12 -> 2, 2, 3
255 -> 3, 5, 17
256 -> 2, 2, 2, 2, 2, 2, 2, 2
1001 -> 7, 11, 13
223092870 -> 2, 3, 5, 7, 11, 13, 17, 19, 23
2147483646 -> 2, 3, 3, 7, 11, 31, 151, 331
2147483647 -> 2147483647
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
Odpowiedzi:
Pyth , 1 bajt
Lubię szanse Pytha w tym wyzwaniu.
źródło
Python 2 , 55 bajtów
Wypróbuj online!
źródło
Python 2, 53 bajty
Próbuje kolejno każdego potencjalnego dzielnika
i
. Jeślii
jest dzielnikiem, wstawi go i uruchomi ponownien/i
. W przeciwnym razie próbuje następnego najwyższego dzielnika. Ponieważ dzielniki są sprawdzane w kolejności rosnącej, znaleziono tylko te pierwsze.Jako program dla 55 bajtów:
źródło
Mathematica,
3830 bajtówDzięki @MartinEnder za 8 bajtów!
źródło
FactorInteger[#][[All, 1]]&
? 26 bajtówGalaretka , 2 bajty
Wypróbuj online!
źródło
Haskell , 48 bajtów
Wypróbuj online! Przykładowe użycie:
(2%) 1001
daje[7,11,13]
.źródło
JavaScript (ES6), 44 bajty
Strasznie nieefektywny ze względu na to, że iteruje od 2 do każdego czynnika pierwszego, w tym ostatniego. Możesz znacznie zmniejszyć złożoność czasu kosztem 5 bajtów:
źródło
Cubix ,
3732 bajtówWypróbuj online! lub Obejrzyj w akcji .
źródło
Właściwie 6 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
o
teraz, prawda?J, 2 bajty
Treść musi mieć co najmniej 30 znaków.źródło
MATL , 2 bajty
Wypróbuj online!
Obowiązkowa „nudna wbudowana odpowiedź”.
źródło
Japt, 2 bajty
Wbudowane
k
używane na wejściuU
. Odnosi się także do kraju.Przetestuj online!
źródło
tonowo głuchy , 3 bajty
Ten język jest dość młody i nie jest jeszcze naprawdę gotowy na nic ważnego, ale potrafi dokonać podstawowej faktoryzacji:
Będzie to czekać na dane wejściowe użytkownika, a następnie wyświetli listę głównych czynników.
źródło
MATLAB, 6 bajtów
Myślę, że nie wymaga to żadnego wyjaśnienia.
źródło
Bash + coreutils, 19 bajtów
Wypróbuj online!
źródło
factor|sed s/.*://
. Równieżfactor|cut -d: -f2
(lub wfactor|cut -d\ -f2
celu dopasowania do bieżącego wyniku) ma tę samą długość bajtu, ale będzie działać szybciej i zużywać mniej pamięci.factor|cut -d\ -f2-
wyeliminować wiodącą przestrzeń, która jest o jeden bajt dłużej.Partia, 96 bajtów
źródło
Pyke, 1 bajt
Wypróbuj tutaj!
Wbudowane czynniki pierwsze.
źródło
Sześciokąty , 58 bajtów
Nie skończyłem jeszcze gry w golfa, ale @MartinEnder i tak powinien być w stanie to zniszczyć
Drukuje czynniki oddzielone spacjami, z końcową spacją
Gra w golfa:
Wyłożony:
Wyjaśnienie nastąpi później.
źródło
05AB1E , 1 bajt
Wypróbuj online!
źródło
CJam, 2 bajty
cjam.aditsu.net / ...
To jest funkcja. Martin, wygląda na to, że byłem śpiący.
źródło
C, 92 bajty
Wersja bez golfa:
źródło
Japt , 1 bajt (niekonkurujący)
Wypróbuj online!
źródło
PHP , 51 bajtów
Wypróbuj online!
źródło
C (gcc) , 51 bajtów
Wypróbuj online!
źródło
Perl 6 ,
7764 bajtówSpróbuj
Wypróbuj (Uwaga: nie ma wystarczająco dużo czasu na ukończenie)
Znacznie bardziej wydajna wersja jest nieco dłuższa przy 100 bajtach.
Spróbuj
Rozszerzony: (wersja 64-bajtowa)
źródło
VB.NET, 86 bajtów
Miałem to z niektórych programów Project Euler. Usunięto optymalizacje w interesie krótkości, a to jest wynik. Oczywiście VB jest bardzo gadatliwy, więc jest dość długi. Nie liczę wiodących białych znaków. Można go pominąć, ale łatwiej go odczytać.
Pobiera to liczbę całkowitą jako parametr i wypisuje czynniki pierwsze przecinkiem po. Na końcu znajduje się przecinek.
źródło
Perl 6 , 51 bajtów
Rozwiązanie rekurencyjne:
źródło
Java (OpenJDK) , 259 bajtów
Wypróbuj online!
źródło
Rubin, 61 bajtów
Najkrótsza wbudowana wersja, o której mogłem myśleć.
źródło
Rubinowy , 48 bajtów
Wypróbuj online!
Trochę późno na imprezę, ale ... dlaczego nie?
źródło