什么是自守数?
自守数是指一个数的平方的尾数等于该数自身的自然数。例如,5的平方=25,尾数等于5,25的平方=625,尾数等于25。
如果要求1000以内的自守数有那些如何实现呢?
下面直接上代码:
########################
if __name__=="__main__":
print("1000以内的自守数:")
for zss in range(0, 1000):
n = zss
k = 1
while (n // 10) > 0: # 由zss的位数确定截取数字进行乘法时的系数k
n //= 10
k *= 10
a = k * 10 # a为截取部分积时的系数
n = 0 # 积的最后n位
b = 10 # b为截取乘数相应位时的系数
while k > 0:
# (部分积+截取被乘数的后N位×截取乘数的第M位),%a再截取部分积
n = (n + (zss % (k * 10))*(zss % b - zss % (b // 10)))%a
k //= 10 # k为截取被乘数时的系数
b *= 10
if zss == n: # 判定若为自守数,则输出
print("%ld " %zss, end="\t")
########################
执行结果如下:
1000以内的自守数:
0 1 5 6 25 76 376 625
________________END______________
网友评论