π ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° Π½Π° Python? π
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° Π² Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ (ΠΠΠ) Π΄Π²ΡΡ ΡΠΈΡΠ΅Π». ΠΠ½ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅.
def euclidean_algorithm(a, b):
while b != 0:
a, b = b, a % b
return a
result = euclidean_algorithm(48, 18)
print(f"ΠΠ°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ: {result}")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΡΠΈΡΠ»Π°, 48 ΠΈ 18, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π²Π΅Π½ 6.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° Π² ΠΠΈΡΠΎΠ½Π΅?
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° - ΡΡΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ (ΠΠΠ) Π΄Π²ΡΡ ΡΠΈΡΠ΅Π». Π ΠΠΈΡΠΎΠ½Π΅ ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΈΠΊΠ»Π°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°.
Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄
Π ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ²ΠΊΠ»ΠΈΠ΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π΄Π²ΡΠΌΡ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠΈΡΠ΅Π» ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΠΠ. ΠΡΠ»ΠΈ ΠΎΠ±Π° ΡΠΈΡΠ»Π° Π½Π΅Π½ΡΠ»Π΅Π²ΡΠ΅, ΠΌΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΠΠ²ΠΊΠ»ΠΈΠ΄Π°, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠΎΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π½Π° Π²ΡΠΎΡΠΎΠ΅. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅:
def euclidean_gcd_recursive(a, b):
if b == 0:
return a
else:
return euclidean_gcd_recursive(b, a % b)
Π ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ % Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΡΡΠ°ΡΠΊΠ° ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ a ΠΈ b ΠΌΠ΅Π½ΡΡΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
Π¦ΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π°, Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠΈΡΠ΅Π» Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ. ΠΠΎΠ³Π΄Π° ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΎΡΡΠ°Π²ΡΠ΅Π΅ΡΡ ΡΠΈΡΠ»ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΠΠ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΠΈΡΠΎΠ½Π΅:
def euclidean_gcd_iterative(a, b):
while b != 0:
a, b = b, a % b
return a
Π ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» while Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° b Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ a ΠΈ b, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ²ΠΊΠ»ΠΈΠ΄Π° Π² ΠΠΈΡΠΎΠ½Π΅. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· Π½Π°ΡΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π²Π° ΡΠΈΡΠ»Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
# Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄
result_recursive = euclidean_gcd_recursive(24, 18)
print(f"ΠΠΠ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ: {result_recursive}")
# Π¦ΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄
result_iterative = euclidean_gcd_iterative(24, 18)
print(f"ΠΠΠ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ: {result_iterative}")
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π²ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄:
ΠΠΠ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ: 6
ΠΠΠ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ: 6
Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΠΠ ΡΠΈΡΠ΅Π» 24 ΠΈ 18, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π²Π΅Π½ 6.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° - ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π». Π ΠΠΈΡΠΎΠ½Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΈΠ»ΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ²ΠΊΠ»ΠΈΠ΄Π° Π² ΠΠΈΡΠΎΠ½Π΅.