如何使用 Python 在给定范围内查找 Kaprekar 数?

pythonprogrammingserver side programming

修正的 Kaprekar 数是一个有 d 位数字的正整数 n,当我们将其平方分成两部分时 - 右侧部分 r 有 d 位数字,左侧部分 l 包含剩余的 d 位或 d−1 位数字,两部分的总和等于原始数字(即 l + r = n)。

您可以通过在给定范围内测试每个数字是否符合给定条件来在给定范围内查找 Kaprekar 数。

示例

def print_Kaprekar_nums(start, end):
   for i in range(start, end + 1):
      # 从列表中的正方形中获取数字:
      sqr = i ** 2
      digits = str(sqr)

      # 现在从 1 循环到数字的长度 - 1,将两边相加并检查
      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)

输出

这将给出输出 −

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

相关文章