Нахождение числа Капрекара на Python
Python

Нахождение числа Капрекара на Python

Razilator

Число Капрекара - это натуральное число, которое в некоторой позиционной системе счисления можно разделить на две части: левую и правую, так что сумма этих частей (с учетом того, что ни одна из частей не должна начинаться с нуля) равна исходному числу.

Код

Вот простой код на Python, который проверяет, является ли число числом Капрекара:

main.py
def is_kaprekar(n):
    square = str(n**2)
    for i in range(1, len(square)):
        left, right = int(square[:i]), int(square[i:])
        if left + right == n:
            return True
    return False

print(is_kaprekar(45))  # Выведет: True
print(is_kaprekar(297))  # Выведет: True
print(is_kaprekar(15))  # Выведет: False

Как это работает

Этот код создает функцию is_kaprekar, которая принимает один аргумент n. Внутри функции вычисляется квадрат числа n и преобразуется в строку. Затем код перебирает все возможные позиции для разделения строки на две части. Если сумма этих двух частей равна n, то число является числом Капрекара.

Вывод чисел Капрекара в заданном диапазоне

В дополнение к проверке, является ли число числом Капрекара, мы можем также написать функцию, которая выводит все числа Капрекара в заданном диапазоне. Вот пример такой функции на Python:

main.py
def print_Kaprekar_nums(start, end):
   for i in range(start, end + 1):
      # Get the digits from the square in a list:
      sqr = i ** 2
      digits = str(sqr)

      # Now loop from 1 to length of the number - 1, sum both sides and check
      length = len(digits)
      for x in range(1, length):
         left = int("".join(digits[:x]))
         right = int("".join(digits[x:]))
         if (left + right) == i:
            print("Number: " + str(i) + " Left: " + str(left) + " Right: " + str(right))

print_Kaprekar_nums(150, 8000)

Эта функция принимает два аргумента: start и end, которые определяют диапазон чисел для проверки. Функция затем перебирает каждое число в этом диапазоне, вычисляет его квадрат, разбивает квадрат на две части и проверяет, является ли сумма этих двух частей исходным числом. Если это так, то число выводится на экран вместе с его левой и правой частями.

Вывод:

Терминал
Number: 297 Left: 88 Right: 209
Number: 703 Left: 494 Right: 209
Number: 999 Left: 998 Right: 1
Number: 1000 Left: 1000 Right: 0
Number: 2223 Left: 494 Right: 1729
Number: 2728 Left: 744 Right: 1984
Number: 4879 Left: 238 Right: 4641
Number: 4950 Left: 2450 Right: 2500
Number: 5050 Left: 2550 Right: 2500
Number: 5292 Left: 28 Right: 5264
Number: 7272 Left: 5288 Right: 1984
Number: 7777 Left: 6048 Right: 1729

Заключение

Числа Капрекара - это интересная область математики, и они могут быть легко найдены с помощью Python. Этот код можно легко адаптировать для поиска чисел Капрекара в определенном диапазоне или для работы с другими системами счисления. Надеюсь, эта статья была полезной!

;