import sys, re # Возвращает абсолютно наименьший вычет числа a по модулю числа b def v(a, b): r1 = a % b r2 = r1 - b return r1 if abs(r1) < abs(r2) else r2 # Считает значение символа Лежандра def solve(a, p): stop_i = (p-1)//2 + 1 cnt = sum(1 for i in range(1, stop_i) if v(a*i, p) < 0) return pow(-1, cnt) f = re.fullmatch(r'(\d+)/(\d+)', sys.argv[1]).groups() print(solve(int(f[0]), int(f[1]))) # Более длинное, но подробное решение # # Вернет систему абсолютно наименьших вычетов числа # def system(a): # if a % 2: # return [i for i in range(-(a-1)//2, (a-1)//2+1)] # else: # return [i for i in range(-a//2+1, a//2+1)] # # Возвращает абсолютно наименьший вычет числа a по модулю числа b # def v(a, b): # s = system(b) # for e in s: # if a % b == e % b: # return e # def legendre(a, p): # count = 0 # for i in range(1, (p-1)//2+1): # if v(i*a, p) < 0: # count += 1 # return pow(-1, count) # print(legendre(11,347))