Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2013 18:10:34

nokados
От: Ростов
Зарегистрирован: 2013-10-15
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

максимальный интервал for или range

for i in range(b,int(n*0.5)+1,1):
(где n - вводимое число, b - наименьший простой множитель числа n)
при вводе числа
1569823637
выдает ошибку MemoryError

Если использовать интервал поменьше, а именно
for i in range(b,int(n**0.5)+100,1):
То все работает - Почему?



моя подпись

Отредактировано nokados (Окт. 20, 2013 18:15:42)

Офлайн

#2 Окт. 20, 2013 18:17:31

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

максимальный интервал for или range

Почему?

потому что интервал поменьше и памяти хватает

Отредактировано bismigalis (Окт. 20, 2013 18:18:16)

Офлайн

#3 Окт. 20, 2013 18:17:55

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

максимальный интервал for или range

Потому что range создает список. Не генератор/иттератор, а прям сразу список заполненный значениями. У Вашего компьютера не хватает оперативы, чтобы этот список держать в мозгах.
Выход, для второго питона

for i in xrange(b, int(n * 0.5) + 1, 1):



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version