On Tue, Nov 9, 2010 at 18:29, C or L Smith <smi...@worksmail.net> wrote:
> >From sympy you simply do: > >>>> from sympy import divisors >>>> list(divisors(256)) > [1, 2, 4, 8, 16, 32, 64, 128, 256] > > So your proper divisors would just be sum(divisors(n)) - n. > The divisors function there is in the ntheory/factor_.py file. Thanks for letting me know about this. def proper_divisors_sum(n): return sum(list(divisors(n))) - n Using Steven's suggested speed test this gets 6.2404818210135886 My up-to-now fastest version, def proper_divisors_sum(n): pd = set((1,)) for x in range(2, int(n**.5)+1): if n % x == 0: pd.update((x, n//x)) return sum(list(pd)) gets 6.1753780857622473 So they're about even. Dick _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor