Polinomios irreducibles sobre GF (5)

13

Un polinomio con coeficientes en algún campo F se llama irreducible sobre F si no se puede descomponer en el producto de polinomios de grado más bajas con coeficientes en F .

Considere polinomios sobre el campo de Galois GF (5). Este campo contiene 5 elementos, a saber, los números 0, 1, 2, 3 y 4.

Tarea

Dado un número entero positivo n , calcule el número de polinomios irreducibles de grado n sobre GF (5). Estos son simplemente los polinomios con coeficientes en 0-4 que no pueden factorizarse en otros polinomios con coeficientes en 0-4.

Entrada

La entrada será un entero único y puede provenir de cualquier fuente estándar (por ejemplo, STDIN o argumentos de función). Debe admitir la entrada hasta el entero más grande de modo que la salida no se desborde.

Salida

Imprima o devuelva el número de polinomios que son irreducibles sobre GF (5). Tenga en cuenta que estos números aumentan bastante rápido.

Ejemplos

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

Tenga en cuenta que estos números forman la secuencia A001692 en OEIS.

Alex A.
fuente
PARI / GP 46 bytes en A001692;) ¿Hay un límite de tiempo?
ბიმო
@Bruce_Forte Nope.
Alex A.

Respuestas:

9

Gelatina , 30 23 22 20 bytes

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

Pruébalo en línea! o verificar todos los casos de prueba a la vez .

Algoritmo

Esto usa la fórmula

fórmula

de la página OEIS, donde d | n indica que sumamos sobre todos los divisores d de n , y μ representa la función de Möbius .

Código

Æ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
fuente
1
¡Me encantan estas respuestas de Jelly a las matemáticas difíciles! :)
3

Mathematica, 39 38 bytes

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

Utiliza la misma fórmula que la respuesta Jelly.

LegionMammal978
fuente
+1 por enseñarme sobre el operador de funciones con nombre, pero creo que es un byte más corto sin:DivisorSum[n=#,5^(n/#)MoebiusMu@#/n&]&
Martin Ender