Hinweis: Diese Herausforderung wurde in der Sandbox veröffentlicht .
Einführung
Diese Herausforderung ist inspiriert von Putnam B1 aus dem Jahr 2009 , einem Problem in einem Mathematikwettbewerb für Studenten. Das Problem ist wie folgt:
Zeigen Sie, dass jede positive rationale Zahl als Quotient von Produkten von Fakultäten von (nicht notwendigerweise unterschiedlichen) Primzahlen geschrieben werden kann. Beispielsweise,
Herausforderung
Ihre Herausforderung besteht darin, zwei relativ positive Primzahlen zu verwenden, die den Zähler und den Nenner einer positiven rationalen Zahl (oder nur der rationalen Zahl selbst) als Eingabe darstellen, und zwei Listen (oder Arrays usw.) von Primzahlen auszugeben, damit Die eingegebene rationale Zahl ist gleich dem Verhältnis des Produkts der Fakultäten der Primzahlen in der ersten Liste zum Produkt der Fakultäten der Primzahlen in der zweiten Liste.
Anmerkungen
- Möglicherweise gibt es keine Primzahlen, die sowohl in der ersten als auch in der zweiten Liste enthalten sind. Ein Prime kann jedoch in jeder Liste so oft vorkommen, wie man möchte.
- Es kann davon ausgegangen werden, dass die Eingaben (uneingeschränkt) zwischen 1 und 65535 liegen. Es kann jedoch nicht davon ausgegangen werden, dass die Fakultäten der auszugebenden Zahlen in diesem Bereich liegen.
Beispiel für Ein- und Ausgabe
Hier sind Beispiele für legale Ein- und Ausgänge.
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],[]
Bei den Eingaben (2,2), (0,3), (3,0), (3,6) und (1,65536) handelt es sich um unzulässige Eingaben (dh Ihr Programm muss sich auf diese nicht besonders verhalten ). Hier einige Beispiele für illegale Ausgaben:
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)
Wertung
Das ist Code-Golf , also gewinnt die niedrigste Punktzahl in Bytes!
10/9
anstatt ein Paar von Zahlen 10
und 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!)
.