日更成长营自学编程Python

自学Python:寻找自守数

2021-12-10  本文已影响0人  小强聊成长

什么是自守数?

自守数是指一个数的平方的尾数等于该数自身的自然数。例如,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______________

上一篇 下一篇

猜你喜欢

热点阅读