Чрезмерное использование Lambda с вариант решета Эратосфена?


Это функция, которая производит сумма простых чисел ниже (не включая) определенного числа (используя вариант на решето Эратосфена).

erastosum = lambda x: sum([i for i in xrange(2, x) if i == 2 or i == 3 or reduce(lambda y,z: y*z, [i%j for j in xrange(2,int(i ** 0.5) + 1)])])

Чрезмерное использование лямбда? Возможно. Облагораживание бы хорошо, но я ищу способы оптимизации. К сожалению, я не уверен, если есть еще один способ оптимизировать настройки у меня сейчас, так что любые предложения (о том, как или что еще можно сделать) было бы здорово.



299
1
задан 12 ноября 2011 в 12:11 Источник Поделиться
Комментарии
1 ответ

Как я люблю анонимные функции, они могут быть кошмаром для отладки. Разделив этот код кусочная (в фактическую функцию или иное) не должен и не уменьшить его производительность при одновременном улучшении обслуживания и мобильность для вас позже.

Этот класс является достаточно эффективной для определения простых чисел. Несмотря на то, что довольно длительным является более эффективным, чем более обычный подход.

2
ответ дан 12 ноября 2011 в 05:11 Источник Поделиться