Uwaga: to wyzwanie zostało opublikowane w piaskownicy .
Wprowadzenie
Wyzwanie to jest inspirowane przez 2009 Putnam B1 , problem w konkursie matematyki na studiach licencjackich. Problem jest następujący:
Pokaż, że każdą dodatnią liczbę wymierną można zapisać jako iloraz iloczynów silni (niekoniecznie odrębnych) liczb pierwszych. Na przykład,
Wyzwanie
Wyzwanie polega na przyjęciu pary względnie pierwszych liczb całkowitych dodatnich reprezentujących licznik i mianownik dodatniej liczby wymiernej (lub po prostu samej liczby wymiernej) jako danych wejściowych i wyprowadzenie dwóch list (lub tablic itp.) Liczb pierwszych, tak aby wprowadzona liczba wymierna jest równa stosunkowi iloczynu silni liczb pierwszych z pierwszej listy do iloczynu silni liczb pierwszych z drugiej listy.
Notatki
- Może nie być żadnych liczb pierwszych, które zawierałyby zarówno na pierwszej liście, jak i na drugiej liście; liczba pierwsza może jednak pojawiać się tyle razy, ile zechce się na każdej liście.
- Można przyjąć, że dane wejściowe wynoszą (bez ograniczeń) między 1 a 65535; nie można jednak założyć, że silnia liczb, które trzeba wyprowadzić, będzie w tym zakresie.
Przykład wejścia i wyjścia
Oto przykłady legalnych danych wejściowych i wyjściowych.
input=>output
10,9 => [2,5],[3,3,3]
2,1 => [2],[]
3,1 => [3],[2]
1,5 => [2,3,2],[5] (elements of a list may be in any order)
3,2 => [3],[2,2]
6,1 => [3],[]
Dane wejściowe (2,2), (0,3), (3,0), (3,6) i (1 65536) są nielegalnymi danymi wejściowymi (tzn. Twój program nie musi zachowywać się w żaden szczególny sposób na nich ). Oto kilka przykładów nielegalnych wyników:
1,2 => [2],[2,2] (2 is in both returned lists)
5,2 => [5],[2,4] (4 is not prime)
2,1 => [2],[1] (1 is not prime either)
3,2 => [3],[2] (3!/2! = 3, not 3/2)
Punktacja
To jest golf golfowy , więc wygrywa najniższy wynik w bajtach!
10/9
a nie parę liczb 10
i 9
?
10/9
=[2*5]/[3*3]
=[(2!/1!) * (5!/4!)] / [(3!/2!) * (3!/2!)]
=[2! * 5! * 2! * 2!] / [3! * 3! * 1! * 4!]
=(2! * 2! * 2! *5!) / (3! * 3! * 4!)
.