Tautan yang relevan di sini dan di sini , tetapi di sini adalah versi singkatnya:
Anda memiliki input dua bilangan bulat adan bantara infinity negatif dan infinity (walaupun jika perlu, saya dapat membatasi rentang, tetapi fungsinya masih harus menerima input negatif).
Definisi simbol Kronecker
Anda harus mengembalikan simbol Kronecker (a|b)untuk input adan di bmana
(a|b) = (a|p_1)^e_1 * (a|p_2)^e_2 * ... * (a|p_n)^e_n
di mana b = p_1^e_1 * p_2^e_2 * ... * p_n^e_n, dan p_idan e_iadalah bilangan prima dan eksponen dalam faktorisasi utama b.
Untuk prime yang aneh p, (a|p)=a^((p-1)/2) (mod p)seperti yang didefinisikan di sini .
Untuk b == 2,(n|2)={0 for n even; 1 for n odd, n=+/-1 (mod 8); -1 for n odd, n=+/-3 (mod 8)
Untuk b == -1,(n|-1)={-1 for n<0; 1 for n>0
Jika a >= b, (a|b) == (z|b)dimana z == a % b. Dengan properti ini, dan seperti yang dijelaskan di sini dan di sini , aadalah residu kuadrat dari bif zadalah, meskipun a >= b.
(-1|b)= 1jika b == 0,1,2 (mod 4)dan -1jika b == 3 (mod 4). (0|b)adalah 0kecuali untuk (0|1)yang 1, karena (a|1)selalu 1dan untuk negatif a, (-a|b) == (-1|b) * (a|b).
Output dari simbol Kronecker selalu -1, 0 or 1, di mana outputnya adalah 0jika adan bmemiliki faktor umum. If badalah prime odd, (a|b) == 1if aadalah residu mod kuadratikb , dan -1jika bukan residu kuadrat.
Aturan
Kode Anda harus berupa program atau fungsi.
Masukan harus dalam urutan
a b.Outputnya harus berupa
-1,0atau1.Ini kode golf, jadi kode Anda tidak harus efisien, cukup singkat.
Tidak ada bawaan yang secara langsung menghitung Kronecker atau simbol Jacobi dan Legendre terkait. Built-in lainnya (untuk faktorisasi utama, misalnya) adalah permainan yang adil.
Contohnya
>>> kronecker(1, 5)
1
>>> kronecker(3, 8)
-1
>>> kronecker(15, 22)
1
>>> kronecker(21, 7)
0
>>> kronecker(5, 31)
1
>>> kronecker(31, 5)
1
>>> kronecker(7, 19)
1
>>> kronecker(19, 7)
-1
>>> kronecker(323, 455625)
1
>>> kronecker(0, 12)
0
>>> kronecker(0, 1)
1
>>> kronecker(12, 0)
0
>>> kronecker(1, 0)
1
>>> kronecker(-1, 5)
1
>>> kronecker(1, -5)
1
>>> kronecker(-1, -5)
-1
>>> kronecker(6, 7)
-1
>>> kronecker(-1, -7)
1
>>> kronecker(-6, -7)
-1
Ini adalah fungsi yang rumit, jadi tolong beri tahu saya jika ada sesuatu yang tidak jelas.


