import gmpy2 from gmpy2 import mpz def sqrt_mod(b): p = mpz(7) b = mpz(b) % p if p % 4 != 3: raise ValueError("Liczba p musi spełniać p ≡ 3 mod 4.") legendre_symbol = gmpy2.powmod(b, (p - 1) // 2, p) if legendre_symbol != 1: raise ValueError(f"{b} nie jest resztą kwadratową modulo {p}.") exponent = (p + 1) // 4 a = gmpy2.powmod(b, exponent, p) if (a * a) % p != b: raise ValueError("Nie udało się znaleźć pierwiastka kwadratowego.") return a b_input = input("Podaj wartość b: ") try: b = mpz(b_input) except ValueError: print("Błędne dane: b musi być liczbą całkowitą.") exit() try: wynik = sqrt_mod(b) print(f"Pierwiastek kwadratowy z {b} modulo 7 to {wynik}.") except ValueError as e: print(e)