这是非常愚蠢的方式:
def divisorGenerator(n):
for i in xrange(1,n/2+1):
if n%i == 0: yield i
yield n
我想要得到的结果与此类似,但是我想要一个更智能的算法(这个算法太慢而且太笨了:-)
我可以很快找到主要因素及其多样性。我有一个生成器以这种方式生成因子:
(因数1,多重性1)(因数
2,多重性2)
(因数3,多重性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的所有除数,而用39s的方式计算了我的机器上愚蠢的方式花费了0.01s,这很酷:D
更新2:别说这是这篇文章的重复。计算给定数的除数无需计算所有除数。这是一个不同的问题,如果您认为不是这样,那么请在Wikipedia上查找“除数函数”。在发布之前,请先阅读问题和答案,如果您不明白主题是什么,请不要添加无用且已经给出答案的内容。