Polinomial tak tereduksi lebih dari GF (5)

13

Sebuah polinomial dengan koefisien di beberapa bidang F disebut tereduksi lebih F jika tidak dapat didekomposisi menjadi produk dari polinomial derajat lebih rendah dengan koefisien di F .

Pertimbangkan polinomial di bidang Galois GF (5). Bidang ini berisi 5 elemen, yaitu angka 0, 1, 2, 3, dan 4.

Tugas

Dengan bilangan bulat positif n , hitung jumlah polinomial tak tereduksi derajat n di atas GF (5). Ini hanyalah polinomial dengan koefisien pada 0-4 yang tidak dapat difaktorkan ke dalam polinomial lain dengan koefisien pada 0-4.

Memasukkan

Input akan berupa bilangan bulat tunggal dan dapat berasal dari sumber standar apa pun (mis., STDIN atau argumen fungsi). Anda harus mendukung input hingga bilangan bulat terbesar sehingga output tidak meluap.

Keluaran

Cetak atau kembalikan jumlah polinomial yang tidak dapat direduksi lebih dari GF (5). Perhatikan bahwa angka-angka ini menjadi besar agak cepat.

Contohnya

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

Perhatikan bahwa angka-angka ini membentuk urutan A001692 di OEIS.

Alex A.
sumber
PARI / GP 46 byte pada A001692;) Apakah ada batas waktu?
ბიმო
@Bruce_Forte Nggak.
Alex A.

Jawaban:

9

Jelly , 30 23 22 20 byte

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

Cobalah online! atau verifikasi semua kasus uji sekaligus .

Algoritma

Ini menggunakan rumus

rumus

dari halaman OEIS, di mana d | n menunjukkan bahwa kita menjumlahkan semua pembagi d dari n , dan μ mewakili fungsi Möbius .

Kode

Æ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
sumber
1
Saya suka jawaban Jelly ini untuk matematika keras! :)
3

Mathematica, 39 38 byte

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

Menggunakan rumus yang sama dengan jawaban Jelly.

LegionMammal978
sumber
+1 untuk mengajari saya tentang operator fungsi-bernama, tapi saya pikir ini satu byte lebih pendek tanpa:DivisorSum[n=#,5^(n/#)MoebiusMu@#/n&]&
Martin Ender