πŸ”Ž Как Π½Π°ΠΉΡ‚ΠΈ блиТайший ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΊ числу ΠΏΠΈΡ‚ΠΎΠ½? Π£Π·Π½Π°ΠΉΡ‚Π΅ сСйчас!

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ блиТайший ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΊ числу "ΠΏΠΈΡ‚ΠΎΠ½", Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° языкС Python:

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 для нахоТдСния Ρ†Π΅Π»ΠΎΠΉ части ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ блиТайшСС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ΅ число, умноТая Ρ†Π΅Π»ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня Π½Π° сСбя. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ сравниваСм расстояниС ΠΎΡ‚ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ числа Π΄ΠΎ исходного числа с расстояниСм ΠΎΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ числа Π΄ΠΎ исходного числа ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ наимСньшСС ΠΈΠ· Π½ΠΈΡ….

Оба ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° находят блиТайший ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ числу. Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Как Π½Π°ΠΉΡ‚ΠΈ максимальноС число Π² Python

7.1 ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ числа. "ПоколСниС Python": курс для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. ΠšΡƒΡ€Ρ Stepik

ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π² Python | round int floor ceil | Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚?

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”€ Как ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ список Π² Python | ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ

πŸ“ Как ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Python ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния

Python функция zip: Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ πŸ€”

πŸ”Ž Как Π½Π°ΠΉΡ‚ΠΈ блиТайший ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΊ числу ΠΏΠΈΡ‚ΠΎΠ½? Π£Π·Π½Π°ΠΉΡ‚Π΅ сСйчас!

πŸ”’ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство Π±ΠΈΡ‚ Π² числС python - подробная инструкция

Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² строку python: простой способ с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

πŸ”§ Как Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² python?