这是一个非常愚蠢的方法:
def divisorGenerator(n):
for i in xrange(1,n/2+1):
if n%i == 0: yield i
yield n
我希望得到的结果和这个类似,但是我想要一个更聪明的算法(这个算法太慢而且太笨了: -)
我可以很快找到质因子和它们的多样性。 我有一个发电机,用这种方式产生因子:
(factor1,multiplicity 1)
(factor 2,multiplicity 2)
(factor 3,multiplicity 3)
诸如此类。
即输出
for i in factorGenerator(100):
print i
是:
(2, 2)
(5, 2)
我不知道这对我想要做的事情有多大用处(我为其他问题编写了代码) ,不管怎样,我想要一个更聪明的方法
for i in divisorGen(100):
print i
输出如下:
1
2
4
5
10
20
25
50
100
更新: 非常感谢 Greg Hewgill 和他的“聪明的方法”:) 计算100000000的所有除数用他的方法取0.01除以我机器上愚蠢的方法取的39除,非常酷: D
更新2: 不要再说这是 这个文章的复制品。计算一个给定数字的除数并不需要计算所有的除数。这是一个不同的问题,如果你认为它不是,那么在维基百科上寻找“除数函数”。在发帖之前阅读问题和答案,如果你不明白什么是主题,只是不要添加没有用的和已经给出的答案。