Burada ve burada alakalı bağlantılar , ancak kısa sürüm:
İki tamsayı var ave bnegatif sonsuzluk ile sonsuzluk arasında bir giriş var (gerekirse, aralığı sınırlayabilirim, ancak işlev yine de negatif girişleri kabul etmelidir).
Kronecker sembolünün tanımı
Sen Kronecker sembolünü geri dönmelidir (a|b)girişler için aveb
(a|b) = (a|p_1)^e_1 * (a|p_2)^e_2 * ... * (a|p_n)^e_n
nerede b = p_1^e_1 * p_2^e_2 * ... * p_n^e_nve p_ive e_iasal çarpanlarına ayırmanın asalları ve üsleri b.
Garip bir asal için p, (a|p)=a^((p-1)/2) (mod p)olarak tanımlanır burada .
İçin b == 2,(n|2)={0 for n even; 1 for n odd, n=+/-1 (mod 8); -1 for n odd, n=+/-3 (mod 8)
İçin b == -1,(n|-1)={-1 for n<0; 1 for n>0
Eğer a >= b, (a|b) == (z|b)nerede z == a % b. Açıklandığı gibi bu özellik ile, ve burada ve burada , abir kuadratik kalan ise beğer zrağmen olduğunu a >= b.
(-1|b)= 1if b == 0,1,2 (mod 4)ve -1if b == 3 (mod 4). (0|b)olduğu 0haricinde (0|1)hangi 1çünkü (a|1)her zaman 1ve negatif için a, (-a|b) == (-1|b) * (a|b).
Kronecker sembolünün çıktı daima -1, 0 or 1çıkış olduğu, 0eğer ave bherhangi bir ortak faktörler vardır. Eğer b, bir tek asal olup (a|b) == 1olmadığını abir olduğunu kuadratik kalan mod bve -1eğer bu bir kuadratik kalan değil.
kurallar
Kodunuz bir program veya işlev olmalıdır.
Girişler sırayla olmalıdır
a b.Çıkış ya olmalıdır
-1,0ya da1.Bu kod golf, bu nedenle kodunuzun verimli olması gerekmez, sadece kısa.
Doğrudan Kronecker veya ilgili Jacobi ve Legendre sembollerini hesaplayan yerleşik yapı yoktur. Diğer yerleşikler (örneğin asal çarpanlara ayırma için) adil oyundur.
Örnekler
>>> 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
Bu karmaşık bir işlev, bu yüzden net olmayan bir şey varsa lütfen bana bildirin.


