Ein konstruierbares n-Gon ist ein reguläres Polygon mit n Seiten, das Sie nur mit einem Kompass und einem nicht markierten Lineal konstruieren können.
Wie von Gauß angegeben, ist das einzige n, für das ein n-Gon konstruierbar ist, ein Produkt einer beliebigen Anzahl unterschiedlicher Fermat-Primzahlen und einer Potenz von 2 (dh n = 2^k * p1 * p2 * ...
mit k
einer ganzen Zahl und jeder p
bestimmten Fermat-Primzahl).
Eine Fermat-Primzahl ist eine Primzahl, die als F (n) = 2 ^ (2 ^ n) +1 mit einer positiven ganzen Zahl ausgedrückt werden kann. Die einzigen bekannten Fermat-Primzahlen sind für 0, 1, 2, 3 und 4.
Die Herausforderung
n>2
Sagen Sie bei einer gegebenen Ganzzahl , ob das n-Gon konstruierbar ist oder nicht.
Spezifikation
Ihr Programm oder Ihre Funktion sollte eine Ganzzahl oder eine Zeichenfolge verwenden, die diese Ganzzahl darstellt (entweder in unärer, binärer, dezimaler oder einer anderen Basis) und einen wahrheitsgemäßen oder falschen Wert zurückgeben oder drucken.
Dies ist Code-Golf, also gewinnt die kürzeste Antwort, es gelten Standard-Lücken .
Beispiele
3 -> True
9 -> False
17 -> True
1024 -> True
65537 -> True
67109888 -> True
67109889 -> False
B
undỊ
ich sie in 5 testen kann.Mathematica, 24 Bytes
Verwendet die folgende Klassifizierung von OEIS:
Der Totient
φ(x)
einer Ganzzahlx
ist die Anzahl der positiven Ganzzahlen darunterx
, auf die koprime istx
. Der Cototient ist die Anzahl der positiven ganzen Zahlen, die es nicht sind, dhx-φ(x)
. Wenn der Totient gleich dem Cototienten ist, bedeutet dies, dass der Totient vonφ(x) == x/2
.Die einfachere Klassifizierung
endet ein Byte länger:
quelle
n
ist die Anzahl der Ganzzahlen daruntern
, zu denenn
Coprime ist, und der Cototient ist die Anzahl der Ganzzahlen daruntern
, die nicht gleich sind. Ich werde in einem Link bearbeiten.n
.Netzhaut,
5150 BytesDie Eingabe erfolgt binär. Die ersten beiden Zeilen teilen sich durch eine Zweierpotenz, die nächsten beiden teilen sich durch alle bekannten Fermat-Primzahlen (wenn die Zahl tatsächlich ein Produkt von Fermat-Primzahlen ist). Bearbeiten: 1 Byte dank @Martin Ender gespeichert ♦.
quelle
JavaScript (ES7), 61 Byte
quelle
Eigentlich 6 Bytes
Diese Antwort basiert auf dem xnor-Algorithmus in Martin Enders Jelly-Antwort . Golfvorschläge willkommen. Probieren Sie es online aus!
Wie es funktioniert
quelle
Stapel, 97 Bytes
Die Eingabe erfolgt stdin in Dezimalzahl. Dies ist tatsächlich 1 Byte kürzer als die iterative Berechnung der Potenzen von 2. Ich habe 1 Byte gespart, indem ich @ xnors 2-Potenz-Check verwendet habe.
quelle