35 lines
739 B
Python
35 lines
739 B
Python
import gmpy2
|
|
from gmpy2 import mpz
|
|
|
|
def is_quadratic_residue(b, p):
|
|
b = mpz(b)
|
|
p = mpz(p)
|
|
|
|
if b % p == 0:
|
|
return True
|
|
|
|
e = (p - 1) // 2
|
|
result = gmpy2.powmod(b, e, p)
|
|
|
|
if result == 1:
|
|
return True
|
|
elif result == p - 1:
|
|
return False
|
|
else:
|
|
return False
|
|
|
|
p = mpz(11)
|
|
b_input = input("Podaj wartość b: ")
|
|
try:
|
|
b = mpz(b_input)
|
|
except ValueError:
|
|
print("Błędne dane: b musi być liczbą całkowitą.")
|
|
exit()
|
|
|
|
if b < 0 or b >= p:
|
|
print("Błędne dane: b musi być w zakresie 0 <= b < p.")
|
|
else:
|
|
if is_quadratic_residue(b, p):
|
|
print(f"{b} jest resztą kwadratową modulo {p}.")
|
|
else:
|
|
print(f"{b} nie jest resztą kwadratową modulo {p}.") |