注: 本系列仅为个人学习笔记,学习内容为《算法小讲堂》(视频传送门),通俗易懂适合编程入门小白,需要具备python语言基础,本人小白,如内容有误感谢您的批评指正
自守数是指一个数的平方的尾数等于该数自身的自然数,例如:52=25, 252=625,762=5776
那么要求100000以内的自守数该怎么实现呢?
一个简单笨重的思路就是对判断对10、100、1000、10000,100000求余判断是否与该数相等,代码实现如下:
print('100000以内的自守数为:')
for n in range(100000):
if n*n%10==n:
print(n)
elif n*n%100==n:
print(n)
elif n*n%1000==n:
print(n)
elif n*n%10000==n:
print(n)
elif n*n%100000==n:
print(n)
以上代码就是一一列举相应位数的可能进行判断,那么换个思路我们可以直接通过该数的位数来确定幂的次数
print('100000以内的自守数为:')
for n in range(100000):
if n*n%10**len(str(n))==n:
print(n)
输出
100000以内的自守数为:
0
1
5
6
25
76
376
625
9376
90625
更进阶的写法就是通过列表解析式一行代码就能实现啦
print([n for n in range(100000) if (n*n%10**len(str(n)))==n])
输出
[0, 1, 5, 6, 25, 76, 376, 625, 9376, 90625]