Rozszerzony algorytm Euklidesa to algorytm używany do znajdowania największego wspólnego dzielnika (NWD) dwóch liczb, a także współczynników x i y w równaniu diofantycznym.
ax+by=NWD(a,b)
Algorytm ten jest rozszerzeniem klasycznego algorytmu Euklidesa, który służy do znajdowania NWD dwóch liczb. Rozszerzony algorytm Euklidesa zwraca również współczynniki, które mogą być używane do rozwiązywania równań modularnych i innych problemów w teorii liczb oraz kryptografii.
Implementacja rozszerzonego algorytmu Euklidesa w programie Python
Poniżej znajduje się implementacja rozszerzonego algorytmu Euklidesa w programie Python.
def extended_gcd(a, b):
if a == 0:
return b, 0, 1
else:
gcd, x1, y1 = extended_gcd(b % a, a)
x = y1 - (b // a) * x1
y = x1
return gcd, x, y
# Przykład użycia
a = 30
b = 20
gcd, x, y = extended_gcd(a, b)
print(f"Największy wspólny dzielnik (NWD) {a} i {b} to {gcd}.")
print(f"Współczynniki: x = {x}, y = {y}, spełniają równanie: {a}*({x}) + {b}*({y}) = {gcd}")
Dla a=30 i b=20, algorytm zwraca NWD 10 oraz współczynniki x=1 i y=−1y=−1, co oznacza, że:
30⋅1+20⋅(−1)=10
Rozszerzony algorytm Euklidesa jest podstawowym narzędziem w wielu zastosowaniach matematycznych i kryptograficznych, takich jak znajdowanie odwrotności modularnej w kryptografii RSA.
Komentarze