问题:给定自然数N,如何求出N的所有约数? 如 N = 198,它的约数有:[1, 2, 3, 6, 9, 11, 18, 22, 33, 66, 99, 198] 一个很自然的想法是:对从2到的所有数进行遍历,看这个数是否能整除N。这样的时间复杂度是 有没有更快一点的呢?? 我们可以这样考虑:如果有非平方数,其中,那么一定有,对于每一个小于的的约数,都有一个对应的,也是的约数,因此我们只需要遍历2到就可以了,每一次整除都对应了的两个约数,最后只需要再考虑一下是不是平方数就可以了。这样,时间复杂度就被优化到了,是个非常大的进步了。 下面贴代码 Python: from typing...