我有一个任务要做。问题是这样的。你给一个数字,比如 x。该程序计算从 1 开始的数字的平方,并且仅当它是回文时才打印它。程序会继续打印这些数字,直到达到您提供的数字 x。
我已经解决了这个问题。它适用于 uptil x = 10000000。在合理的时间内执行时效果很好。我想提高我的代码的效率。如果需要,我愿意更改整个代码。我的目标是制作一个可以在大约 5 分钟内执行 10^20 的程序。
limit = int(input("Enter a number"))
def palindrome(limit):
count = 1
base = 1
while count < limit:
base = base * base #square the number
base = list(str(base)) #convert the number into a list of strings
rbase = base[:] #make a copy of the number
rbase.reverse() #reverse this copy
if len(base) > 1:
i = 0
flag = 1
while i < len(base) and flag == 1:
if base[i] == rbase[i]: #compare the values at the indices
flag = 1
else:
flag = 0
i += 1
if flag == 1:
print(''.join(base)) #print if values match
base = ''.join(base)
base = int(base)
base = count + 1
count = count + 1
palindrome(limit)