Python SolutionsPython Solutions
✂️
Kaprekar Numbers
Week 45, 2026
All SolutionsPython - Loop, Split & Check | BMC | Python Solutions
def writeToFile(fileName:str, data:list[str]) -> None:
try:
file = open(fileName, 'w')
for line in data:
file.write(line+'\n')
file.close()
print("[WTF] Ans.txt made..")
except:
print('[ERROR] File problem :/')
def isKeprekar(num:int) -> tuple[bool, list[str]]:
isK, ans = False, []
square = num*num
sNum = str(square)
for i in range(1, len(sNum)):
left = int(sNum[0:i])
righ = int(sNum[i:])
if (
left != 0 and
righ != 0 and
(left+righ) == num
):
ans.append(sNum[0:i])
ans.append(sNum[i:])
isK = True
break
return isK, ans
def main() -> None:
'''
9 (81): 8 + 1
45 (2025): 20 + 25
55 (3025): 30 + 25
99 (9801): 98 + 01
'''
data = []
for i in range(1, 1_000_001):
check, ans = isKeprekar(i)
if check:
print(f'{i} ({i*i}): {ans[0]} + {ans[-1]}')
data.append(f'{i} ({i*i}): {ans[0]} + {ans[-1]}')
print("[main] 1 -> 1_000_000 Keprekar done...")
print(f"[main] data has {len(data)} lines")
writeToFile("ans.txt", data)
if __name__ == "__main__":
main()