要说什么是回文数?就得先说说什么是回文。
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。
那回文数就简单了,设x是一任意自然数。若将x的各位数字反向排列所得自然数x1与x相等,则称n为一回文数。例如,若x=1234321,则称n为一回文数;但若x=1234567,则x不是回文数。
设计一段程序打印所有不超过512的其平方具有对称性的数,也就是回文数。
下面直接上代码:
########################
if __name__ == '__main__':
m = [1] * 17
count = 0
print("序列. 数字 回文数")
for n in range(1, 512): # 穷举n的取值范围
k, i, t, a = 0, 0, 1, n*n # 计算n的平方
squ = a
while a != 0: # 从低到高分解数a的每一位存于数组m[1]~m[16]
m[i] = a % 10
a //= 10
i += 1
while i > 0:
k += m[i-1] * t # t记录某一位置对应的权值
t *= 10
i -= 1
if k == squ:
count += 1
print("%2d%10d%10d" % (count, n, n*n))
########################
执行结果如下:
序列. 数字 回文数
1 1 1
2 2 4
3 3 9
4 11 121
5 22 484
6 26 676
7 101 10201
8 111 12321
9 121 14641
10 202 40804
11 212 44944
12 264 69696
13 307 94249
________________END______________
网友评论