Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để tìm số Kaprekar trong một phạm vi nhất định bằng Python?


Số Kaprekar đã sửa đổi là một số nguyên dương n có d chữ số, sao cho khi chúng ta chia hình vuông của nó thành hai mảnh - mảnh bên phải r có d chữ số và mảnh bên trái l chứa d hoặc d − 1 chữ số còn lại, tổng các phần bằng số ban đầu (tức là l + r =n).

Bạn có thể tìm số Kaprekar trong một phạm vi nhất định bằng cách kiểm tra từng số cho điều kiện nhất định trong phạm vi đã cho.

ví dụ

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)

Đầu ra

Điều này sẽ đưa ra kết quả -

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