Bei einer positiven ganzen Zahl n werden die ganzen Zahlen a und b (unter Bildung des reduzierten Anteils a / b ) so ausgegeben, dass:
Dabei ist p k die k- te Primzahl (mit p 1 = 2).
Beispiele:
1 -> 3, 5
2 -> 12, 25
3 -> 144, 325
4 -> 3456, 8125
5 -> 41472, 99125
15 -> 4506715396450638759507001344, 11179755611058498955501765625
420 -> very long
Probabilistische Prim-Checks sind erlaubt und es ist in Ordnung, wenn Ihre Antwort aufgrund von Einschränkungen im Integer-Typ Ihrer Sprache fehlschlägt.
Kürzester Code in Bytes gewinnt.
code-golf
arithmetic
orlp
quelle
quelle
3.0
statt3
?a
undb
als rationalen Typ?Antworten:
M , 9 Bytes
Probieren Sie es online!
Trivia
Triff m!
M ist eine Gabel aus Jelly, die auf mathematische Herausforderungen ausgerichtet ist. Der Hauptunterschied zwischen Jelly und M besteht darin, dass M für alle internen Berechnungen eine unendliche Präzision verwendet und die Ergebnisse symbolisch darstellt. Sobald M reifer ist, wird Jelly allmählich vielseitiger und weniger mathematisch orientiert.
M ist sehr viel in Arbeit (voller Bugs, und nicht wirklich , dass ich von Jelly jetzt), aber es wirkt wie ein Zauber für diese Herausforderung und ich konnte einfach nicht widerstehen.
Wie es funktioniert
quelle
ÆN
der einzige M-spezifische Operator? Also MellyMathematica, 32 Bytes
Eine unbenannte Funktion, die eine Ganzzahleingabe akzeptiert und den tatsächlichen Bruch zurückgibt.
Dies nutzt die Tatsache, dass . Der Code wird dann abgearbeitet, da Mathematica alle Grundrechenarten über Listen verteilt. Also erstellen wir zuerst eine Liste , rufen dann alle diese Primzahlen ab und fügen diese Liste in den obigen Ausdruck ein. Dies gibt uns eine Liste aller Faktoren. Schließlich multiplizieren wir alles miteinander, indem wir uns an die Liste wenden , auf die gespielt werden kann .
(p2-1)/(p2+1) = 1-2/(p2+1)
{1, 2, ..., n}
Times
1##&
Alternativ können wir
Array
für die gleiche Byteanzahl verwenden:quelle
1-2
=1
, richtig?-1
eigentlich), aber1-2/x ≠ -1/x
. ;)@Range@
±~Array~
Python 2, 106 Bytes
Die erste und vierte Zeile tun so weh ... es stellte sich nur heraus, dass das Verwenden
Fraction
besser war als das separate Multiplizieren und Verwendengcd
, selbst in Python 3.5+, in dem sichgcd
befindetmath
.Prime Generation angepasst von @ xnor Antwort hier , die Wilson-Theorem verwendet.
quelle
Ruby,
1227765 BytesVielen Dank an Sherlock für das Abschneiden von 10 Bytes.
Definiert eine anonyme Funktion, die eine Zahl annimmt und a zurückgibt
Rational
.quelle
PARI / GP , 33 Bytes
Alternative Version (46 Byte):
Nicht konkurrierende Version mit dem Fließkomma (
t_REAL
) Ergebnis (38 Bytes):quelle
Jelly ,
1413 BytesProbieren Sie es online! Vielen Dank an @Dennis für -1 Byte.
quelle
Pyth,
2625Probieren Sie es hier aus oder starten Sie die Test Suite .
Dank Jakube 1 Byte gespart!
Ziemlich naive Umsetzung der Vorgaben. Verwendet das schicke "new" (ich habe keine Ahnung, wann dies hinzugefügt wurde, aber ich habe es noch nie gesehen),
P<neg>
das zurückgibt, ob der positive Wert einer negativen Zahl eine Primzahl ist oder nicht. Ein Teil des Mappings usw. kann wahrscheinlich golfen werden ...quelle
Julia,
5942 BytesDies ist eine anonyme Funktion, die eine Ganzzahl akzeptiert und ein
Rational
mitBigInt
Zähler und Nenner zurückgibt .Wir beginnen mit der Erzeugung der Liste der Primzahlen kleiner als 2 n 2 und der Auswahl der ersten n Elemente. Dies funktioniert, weil die n- te Primzahl für alle n > 1 immer kleiner als n 2 ist . ( Siehe hier .)
Für jedes p der ausgewählten n Primzahlen quadrieren wir p mit elementweiser Potenz (
.^2
) und konstruieren das rationale 2 / ( p + 1), wobei 2 zuerst in a konvertiert wird,BigInt
um eine ausreichende Präzision sicherzustellen. Wir subtrahieren dies von 1, nehmen das Produkt des resultierenden Arrays von Rationalen und geben das resultierende Rationale zurück.Anwendungsbeispiel:
17 dank Sp3000 gerettet!
quelle
Konvex, 28 Bytes
Convex ist eine neue Sprache, die ich entwickle und die stark auf CJam und Golfscript basiert. Den Interpreter und die IDE finden Sie hier . Die Eingabe ist eine Ganzzahl in die Befehlszeilenargumente. Indizes sind einseitig. Verwendet die CP-1252-Codierung.
Sie können diese Antwort als konkurrierend ansehen oder auch nicht, da ich an einigen Funktionen gearbeitet habe, die dieses Programm verwendet, bevor die Herausforderung veröffentlicht wurde. Die Festschreibung wurde jedoch getätigt, sobald ich sah, dass diese Herausforderung abgelaufen ist.
quelle
MATL , 18 Bytes
Probieren Sie es online!
Fehler bei großen Eingaben, da nur ganze Zahlen bis zu
2^52
intern genau dargestellt werden können.Erläuterung
quelle
Mathematica, 45 Bytes
Primes? Brüche? Mathematica.
quelle
Haskell, 53 Bytes
Anonyme Funktion, 53 Zeichen:
Versuchen Sie es hier (Anmerkung: in Standard GHCi müssen Sie zuerst sicherstellen ,
Data.Ratio
undData.List
importiert werden ):Die Listenindizierung von Haskell
!!
basiert auf 0.(___!!)
ist ein Operator-Bereich , der eine anonyme Funktion bildet, damit(xs !!) n == xs !! n
.Es sind vier Bytes weniger, um die gesamte Sequenz zu generieren:
quelle
Im Ernst, 25 Bytes
Outputs
a\nb
(\n
ist eine Newline). Große Eingaben dauern lange (und können aufgrund von Speichermangel fehlschlagen), da die Generierung von Primzahlen ziemlich langsam ist.Probieren Sie es online!
Erläuterung:
quelle