Polinomi irriducibili su GF (5)


13

Un polinomio a coefficienti in un certo campo F è chiamato irriducibile su F se non può essere scomposto nel prodotto di polinomi di grado inferiore a coefficienti in F .

Considera i polinomi sul campo Galois GF (5). Questo campo contiene 5 elementi, ovvero i numeri 0, 1, 2, 3 e 4.

Compito

Dato un numero intero positivo n , calcolare il numero di polinomi irriducibili di grado n su GF (5). Questi sono semplicemente i polinomi con coefficienti in 0-4 che non possono essere considerati in altri polinomi con coefficienti in 0-4.

Ingresso

L'input sarà un singolo intero e può provenire da qualsiasi sorgente standard (es. STDIN o argomenti di funzione). È necessario supportare l'input fino al numero intero più grande in modo tale che l'output non trabocchi.

Produzione

Stampa o restituisce il numero di polinomi irriducibili su GF (5). Si noti che questi numeri si ingrandiscono piuttosto rapidamente.

Esempi

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

Si noti che questi numeri formano la sequenza A001692 in OEIS.


PARI / GP 46 byte su A001692;) Esiste un limite di tempo?
ბიმო

@Bruce_Forte Nope.
Alex A.

Risposte:


9

Gelatina , 30 23 22 20 byte

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

Provalo online! oppure verifica tutti i casi di test contemporaneamente .

Algoritmo

Questo utilizza la formula

formula

dalla pagina OEIS, dove d | n indica che sommiamo tutti i divisori d di n e μ rappresenta la funzione di Möbius .

Codice

Æ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).

1
Adoro queste risposte di Jelly alla dura matematica! :)

3

Mathematica, 39 38 byte

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

Utilizza la stessa formula della risposta Jelly.


+1 per avermi insegnato sull'operatore con funzione nominata, ma penso che sia un byte più breve senza:DivisorSum[n=#,5^(n/#)MoebiusMu@#/n&]&
Martin Ender,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.