π ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ ΠΊ ΡΠΈΡΠ»Ρ ΠΏΠΈΡΠΎΠ½? Π£Π·Π½Π°ΠΉΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρ!
import math
def find_nearest_square(number):
sqrt = math.isqrt(number) # ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π»ΡΡ ΡΠ°ΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ ΡΠΈΡΠ»Π°
lower = sqrt ** 2 # Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π΅ number
upper = (sqrt + 1) ** 2 # Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅Π΅ number
if abs(number - lower) < abs(number - upper):
return lower
else:
return upper
number = 78 # ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
nearest_square = find_nearest_square(number)
print(f"ΠΠ»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ ΠΊ ΡΠΈΡΠ»Ρ {number} - ΡΡΠΎ {nearest_square}")
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· ΡΡΠΈΡ
Π΄Π²ΡΡ
ΡΠΈΡΠ΅Π» ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ "number" Π½Π° Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ ΠΊ ΡΠΈΡΠ»Ρ ΠΏΠΈΡΠΎΠ½
ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΏΠΎΠΈΡΠΊΠ΅ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° ΠΊ ΡΠΈΡΠ»Ρ Π² Python, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π° ΠΈΠ· Π½ΠΈΡ .
1. ΠΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ°
ΠΠ΅ΡΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ΅ Π²ΡΠ΅Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», Π½Π°ΡΠΈΠ½Π°Ρ Ρ 0 ΠΈ Π΄Π²ΠΈΠ³Π°ΡΡΡ Π²Π²Π΅ΡΡ , ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΎΠ΅ ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ.
def nearest_square(number):
if number == 0:
return 0
square = 0
while square * square <= number:
square += 1
if abs((square - 1) * (square - 1) - number) < abs(square * square - number):
return (square - 1) * (square - 1)
else:
return square * square
number = 42
nearest_square = nearest_square(number)
print(f"ΠΠ»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ ΠΊ ΡΠΈΡΠ»Ρ {number} - ΡΡΠΎ {nearest_square}")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ nearest_square, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΎΠ΅ ΠΊ ΡΡΠΎΠΌΡ ΡΠΈΡΠ»Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΡΠΈΡΠ»ΠΎΠΌ 42 ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
2. ΠΠ΅ΡΠΎΠ΄ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΡΠ»Ρ
ΠΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΡΠ»Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° ΠΊ ΡΠΈΡΠ»Ρ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π²ΡΠ΅Ρ ΡΠΈΡΠ΅Π».
import math
def nearest_square(number):
if number == 0:
return 0
square_root = math.isqrt(number)
nearest_square = square_root * square_root
if abs((square_root + 1) * (square_root + 1) - number) < abs(nearest_square - number):
return (square_root + 1) * (square_root + 1)
else:
return nearest_square
number = 42
nearest_square = nearest_square(number)
print(f"ΠΠ»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ ΠΊ ΡΠΈΡΠ»Ρ {number} - ΡΡΠΎ {nearest_square}")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ math.isqrt Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠΌΠ½ΠΎΠΆΠ°Ρ ΡΠ΅Π»ΡΡ ΡΠ°ΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ Π½Π° ΡΠ΅Π±Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π΄ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Ρ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΎΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π΄ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΈΠ· Π½ΠΈΡ .
ΠΠ±Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΡΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ. ΠΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.