Форум сайта python.su
for i in xrange(1, 600851475141): if 600851475141 % i == 0: print i
Отредактировано ks (Март 6, 2013 14:18:14)
Офлайн
А вы серьезно считаете, что цикл из 600 милиардов итераций должен работать быстро?
Оптимизировать тут можно многое, например получить факторизацию числа и по ней составить список делителей. Но в вашем случае достаточно итерировать до квадратного корня по нечетным числам.
Офлайн
>>> import sympy.ntheory.primetest as pt >>> pt.isprime(600851475141) False
Отредактировано doza_and (Март 7, 2013 21:16:46)
Офлайн
ks>>> dt=1e-3;(600851475141*dt)/(3600*24*365)
после некоторого момента, он наглухо виснет?
Офлайн
Уберите print
Офлайн
pnk.andrianа кто сказал, что это вывод всех простых чисел ?
Но в вашем случае достаточно итерировать до квадратного корня по нечетным числам.
Isemprint там вообще очень редко происходит
Уберите print
Офлайн
py.user.nextА при чем здесь простые числа?
а кто сказал, что это вывод всех простых чисел ?
разделить на два можно верхнюю границу
Офлайн
ksКод виснет потому, что 600851475141 = 3*11981*16716787
Да и вопрос интересует - почему, после некоторого момента, он наглухо виснет?
Отредактировано Isem (Март 11, 2013 10:47:13)
Офлайн
pnk.andrianЭто как (сам процесс факторизации числа - при чем он здесь, не понятен)?
получить факторизацию числа и по ней составить список делителей
pnk.andrian.))))) Ну подумаешь - не заметил порядок цифр.. я думал вполне реально и вот такое число перебрать: 100000000000000000000000000000000000 - ошибался.
А вы серьезно считаете, что цикл из 600 милиардов итераций должен работать быстро?
Офлайн
doza_and
>>> dt=1e-3;(600851475141*dt)/(3600*24*365)
19.05287528985921
Немного подождите.
Отредактировано ks (Март 11, 2013 16:08:22)
Офлайн