จำนวน Kaprekar ที่แก้ไขแล้วเป็นจำนวนเต็มบวก n ที่มีตัวเลข d หลัก ดังนั้นเมื่อเราแยกสี่เหลี่ยมจัตุรัสของมันออกเป็นสองส่วน - ชิ้นขวา r ที่มี d หลัก และชิ้นด้านซ้าย l ที่มีตัวเลข d หรือ d-1 ที่เหลืออยู่ ผลรวมของชิ้นจะเท่ากับตัวเลขเดิม (เช่น l + r =n)
คุณสามารถค้นหาหมายเลข Kaprekar ภายในช่วงที่กำหนดโดยการทดสอบแต่ละหมายเลขสำหรับเงื่อนไขที่กำหนดในช่วงที่กำหนด
ตัวอย่าง
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)
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
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