Irreduzible Polynome über GF (5)

13

Ein Polynom mit Koeffizienten in einem Feld F heißt irreduzibel gegenüber F, wenn es nicht in das Produkt von Polynomen niedrigeren Grades mit Koeffizienten in F zerlegt werden kann .

Betrachten Sie Polynome über dem Galoisfeld GF (5). Dieses Feld enthält 5 Elemente, nämlich die Nummern 0, 1, 2, 3 und 4.

Aufgabe

Berechnen Sie bei einer positiven ganzen Zahl n die Anzahl der irreduziblen Polynome des Grades n über GF (5). Dies sind einfach die Polynome mit Koeffizienten in 0-4, die nicht in andere Polynome mit Koeffizienten in 0-4 zerlegt werden können.

Eingang

Die Eingabe ist eine einzelne Ganzzahl und kann aus einer beliebigen Standardquelle stammen (z. B. STDIN- oder Funktionsargumente). Sie müssen die Eingabe bis zur größten Ganzzahl unterstützen, damit die Ausgabe nicht überläuft.

Ausgabe

Anzahl der Polynome drucken oder zurückgeben, die über GF nicht reduzierbar sind (5). Beachten Sie, dass diese Zahlen ziemlich schnell groß werden.

Beispiele

In : Out
 1 : 5
 2 : 10
 3 : 40
 4 : 150
 5 : 624
 6 : 2580
 7 : 11160
 8 : 48750
 9 : 217000
10 : 976248
11 : 4438920

Beachten Sie, dass diese Nummern die Sequenz A001692 in OEIS bilden.

Alex A.
quelle
PARI / GP 46 Bytes auf A001692;) Gibt es eine zeitliche Begrenzung?
18.
@ Bruce_Forte Nein.
Alex A.

Antworten:

9

Jelly , 30 23 22 20 Bytes

ÆF>1’PḄ
ÆDµU5*×Ç€S:Ṫ

Probieren Sie es online! oder überprüfen Sie alle Testfälle auf einmal .

Algorithmus

Dies verwendet die Formel

Formel

von der OEIS-Seite, wo d | n gibt an, dass wir über alle Teiler d von n summieren und μ die Möbius-Funktion darstellt .

Code

ÆF>1’PḄ       Monadic helper link. Argument: d
              This link computes the Möbius function of d.

ÆF            Factor d into prime-exponent pairs.
  >1          Compare each prime and exponent with 1. Returns 1 or 0.
    ’         Decrement each Boolean, resulting in 0 or -1.
     P        Take the product of all Booleans, for both primes and exponents.
      Ḅ       Convert from base 2 to integer. This is a sneaky way to map [0, b] to
              b and [] to 0.

ÆDµU5*×Ç€S:Ṫ  Main link. Input: n

ÆD            Compute all divisors of n.
  µ           Begin a new, monadic chain. Argument: divisors of n
   U          Reverse the divisors, effectively computing n/d for each divisor d.
              Compute 5 ** (n/d) for each n/d.

       ǀ     Map the helper link over the (ascending) divisors.
      ×       Multiply the powers by the results from Ç.
         S    Add the resulting products.
          Ṫ   Divide the sum by the last divisor (n).
Dennis
quelle
1
Ich liebe diese Gelee-Antworten auf harte Mathe! :)
3

Mathematica, 39 38 Bytes

DivisorSum[a=#,5^(a/#)MoebiusMu@#/a&]&

Verwendet die gleiche Formel wie die Gelee-Antwort.

LegionMammal978
quelle
+1 für das Erlernen des Operators für benannte Funktionen, aber ich denke, es ist ein Byte kürzer ohne:DivisorSum[n=#,5^(n/#)MoebiusMu@#/n&]&
Martin Ender