Biorąc pod uwagę dodatnią liczbę całkowitą n, liczby całkowite a i b (tworząc ułamek zredukowany a / b ) tak, że:
Gdzie p k jest k- tą liczbą pierwszą (przy p 1 = 2).
Przykłady:
1 -> 3, 5
2 -> 12, 25
3 -> 144, 325
4 -> 3456, 8125
5 -> 41472, 99125
15 -> 4506715396450638759507001344, 11179755611058498955501765625
420 -> very long
Probabilistyczne sprawdzanie liczb pierwszych jest dozwolone i jest w porządku, jeśli odpowiedź nie powiedzie się z powodu ograniczeń w liczbie całkowitej twojego języka.
Najkrótszy kod w bajtach wygrywa.
code-golf
arithmetic
orlp
źródło
źródło
3.0
zamiast3
?a
ib
jako racjonalnego typu?Odpowiedzi:
M , 9 bajtów
Wypróbuj online!
Drobnostki
Poznaj M!
M to widelec galaretki, mający na celu matematyczne wyzwania. Podstawowa różnica między galaretką a M polega na tym, że M używa nieskończonej precyzji do wszystkich wewnętrznych obliczeń, reprezentując symbolicznie wyniki. Gdy M stanie się bardziej dojrzałe, galaretka stopniowo stanie się bardziej uniwersalna i mniej zorientowana na matematykę.
M jest bardzo dużo pracy w toku (pełne błędów, i nie bardzo , że różni się od Jelly teraz), ale działa jak czar na to wyzwanie, a ja po prostu nie mógł się oprzeć.
Jak to działa
źródło
ÆN
to jedyny operator specyficzny dla M? Również MellyMathematica, 32 bajty
Nienazwana funkcja, która pobiera dane liczbowe całkowite i zwraca rzeczywistą część.
Wykorzystuje to fakt . Kod jest następnie golfowany dzięki temu, że Mathematica wątkuje wszystkie podstawowe operacje arytmetyczne na listach. Więc najpierw tworzymy listę , a następnie pobieramy wszystkie liczby pierwsze i podłączamy tę listę do powyższego wyrażenia. To daje nam listę wszystkich czynników. Na koniec mnożymy wszystko razem, stosując się do listy, na którą można grać w golfa .
(p2-1)/(p2+1) = 1-2/(p2+1)
{1, 2, ..., n}
Times
1##&
Alternatywnie możemy użyć
Array
dla tej samej liczby bajtów:źródło
1-2
=1
prawda?-1
właściwie), ale1-2/x ≠ -1/x
. ;)@Range@
±~Array~
Python 2, 106 bajtów
Pierwsza i czwarta linia tak bardzo bolały ... po prostu okazało się, że używanie
Fraction
było lepsze niż mnożenie osobno i używaniegcd
, nawet w Pythonie 3.5+, gdzie sięgcd
znajdujemath
.Pierwsza generacja zaadaptowana z odpowiedzi @ xnora tutaj , która wykorzystuje twierdzenie Wilsona.
źródło
Ruby,
1227765 bajtówPodziękowania dla Sherlocka za stratę 10 bajtów.
Definiuje anonimową funkcję, która pobiera liczbę i zwraca a
Rational
.źródło
PARI / GP , 33 bajty
Alternatywna wersja (46 bajtów):
Wersja niekonkurencyjna z
t_REAL
wynikiem zmiennoprzecinkowym ( ) (38 bajtów):źródło
Galaretka ,
1413 bajtówWypróbuj online! Dzięki @Dennis za -1 bajtów.
źródło
Pyth
2625Wypróbuj tutaj lub uruchom pakiet testowy .
1 bajt zapisany dzięki Jakube!
Dość naiwne wdrożenie specyfikacji. Używa sztywnego „nowego” (nie mam pojęcia, kiedy to zostało dodane, ale nigdy go nie widziałem),
P<neg>
który zwraca, czy dodatnia wartość liczby ujemnej jest liczbą pierwszą, czy nie. Niektóre mapy itp. Można prawdopodobnie zagrać w golfa ...źródło
Julia,
5942 bajtówJest to anonimowa funkcja, która przyjmuje liczbę całkowitą i zwraca
Rational
zBigInt
licznikiem i mianownikiem.Zaczynamy od wygenerowania listy liczb pierwszych mniejszych niż 2 n 2 i wybrania pierwszych n elementów. Działa to, ponieważ n- ta liczba pierwsza jest zawsze mniejsza niż n 2 dla wszystkich n > 1. ( Zobacz tutaj .)
Dla każdego p o n bodźce wybranego do kwadratu s przy zasilaniu elementwise (
.^2
), i konstruowania racjonalnego 2 / ( p + 1), gdzie 2 jest najpierw przekształca się wBigInt
celu zapewnienia odpowiedniej precyzji. Odejmujemy to od 1, bierzemy wynikową tablicę wymiernych i zwracamy wynikową wymierną.Przykładowe użycie:
Oszczędności 17 dzięki Sp3000!
źródło
Wypukły, 28 bajtów
Convex to nowy język, który rozwijam, oparty w dużej mierze na CJam i Golfscript. Tłumacz i IDE można znaleźć tutaj . Dane wejściowe to liczba całkowita w argumentach wiersza poleceń. Indeksy są oparte na jednym. Wykorzystuje kodowanie CP-1252.
Możesz uznać tę odpowiedź za konkurencyjną lub nie, ponieważ pracowałem nad kilkoma funkcjami używanymi przez ten program przed opublikowaniem wyzwania, ale zatwierdzenie zostało wykonane, gdy zobaczyłem, że wyzwanie się skończyło.
źródło
MATL , 18 bajtów
Wypróbuj online!
Nie działa przy dużych wejściach, ponieważ tylko liczby całkowite do
2^52
mogą być dokładnie reprezentowane wewnętrznie.Wyjaśnienie
źródło
Mathematica, 45 bajtów
Liczby pierwsze? Ułamki? Matematyka.
źródło
Haskell, 53 bajty
Funkcja anonimowa, 53 znaki:
Wypróbuj go tutaj (uwaga: w standardzie GHCi trzeba najpierw upewnić się,
Data.Ratio
iData.List
są importowane):Indeksowanie list Haskell
!!
opiera się na 0.(___!!)
to sekcja operatora , która tworzy anonimową funkcję, dzięki czemu(xs !!) n == xs !! n
.Generowanie całej sekwencji to cztery bajty mniej:
źródło
Poważnie, 25 bajtów
Wyjścia
a\nb
(\n
to nowa linia). Duże wejścia zajmą dużo czasu (i mogą się nie powieść z powodu braku pamięci), ponieważ generowanie liczb pierwszych jest dość wolne.Wypróbuj online!
Wyjaśnienie:
źródło