Polinômios irredutíveis sobre GF (5)

13

Um polinômio com coeficientes em algum campo F é chamado irredutível sobre F se não pode ser decomposto no produto de polinômios menor grau com coeficientes em F .

Considere polinômios sobre o campo de Galois GF (5). Este campo contém 5 elementos, os números 0, 1, 2, 3 e 4.

Tarefa

Dado um número inteiro positivo n , calcule o número de polinômios irredutíveis de grau n sobre GF (5). Estes são simplesmente os polinômios com coeficientes em 0-4 que não podem ser fatorados em outros polinômios com coeficientes em 0-4.

Entrada

A entrada será um único inteiro e pode vir de qualquer fonte padrão (por exemplo, STDIN ou argumentos de função). Você deve dar suporte à entrada até o maior número inteiro, para que a saída não exceda.

Resultado

Imprima ou retorne o número de polinômios irredutíveis em GF (5). Observe que esses números aumentam rapidamente.

Exemplos

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

Observe que esses números formam a sequência A001692 no OEIS.

Alex A.
fonte
PARI / GP 46 bytes em A001692;) Existe um limite de tempo?
ბიმო
@Bruce_Forte Nope.
Alex A.

Respostas:

9

Geléia , 30 23 22 20 bytes

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

Experimente online! ou verifique todos os casos de teste de uma só vez .

Algoritmo

Isso usa a fórmula

Fórmula

da página OEIS, em que d | n indica que somamos todos os divisores d de n e μ representa a função 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
fonte
1
Eu amo essas respostas Jelly para matemática difícil! :)
3

Mathematica, 39 38 bytes

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

Usa a mesma fórmula que a resposta Jelly.

LegionMammal978
fonte
+1 por me ensinar sobre o operador de função nomeada, mas acho que é um byte mais curto sem:DivisorSum[n=#,5^(n/#)MoebiusMu@#/n&]&
Martin Ender