Modified Kaprekar number คือจำนวนเต็มบวก n ที่มี d หลัก ซึ่งเมื่อแยกกำลังสองของมันเป็นสองชิ้น - ชิ้นขวา r มี d หลัก และชิ้นซ้าย l มี d หรือ d-1 หลัก ผลรวมของชิ้นเท่ากับตัวเลขเดิม (l + r = n)
หา Kaprekar numbers ในช่วงได้โดยทดสอบเงื่อนไขทุกตัวเลขในช่วง
ตัวอย่าง
def print_Kaprekar_nums(start, end):
for i in range(start, end + 1):
sqr = i ** 2
digits = str(sqr)
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: 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