Найти - Пользователи
Полная версия: Теорема Лагранжа
Начало » Python для новичков » Теорема Лагранжа
1 2
al_orange
Без рекурсии неинтересно.)

Сделала с ней, но числа после 511 не канают, не хватают, а должны до 10000 раскладываться
py.user.next
al_orange
а должны до 10000 раскладываться
Мой вариант до 1000000 раскладывает с задержкой в секунд тридцать.

al_orange
Сделала с ней, но числа после 511 не канают, не хватают
А ты сделай
  
>>> import sys
>>> 
>>> sys.setrecursionlimit(1000000000)
>>>
al_orange
py.user.next
с задержкой в секунд тридцать
попробуй сравнить скорость с таким вариантом, как на скрине в след сообщении.

я там ограничения на максимумы поставила; вообще же, если залезть в теорему, то можно найти и ограничения для минимумов:
a_min = ceil((n / 4)**0.5)
b_min = ceil(((n - a**2)/3)**0.5)
c_min = ceil(((n - a**2 - b**2)/2)**0.5)
не получилось пока их впихнуть в код выше (особо не старлась), но оно точно увеличит скорость.
(для проверки можно 7168 юзать, ответ: 80 16 16 16, не 48 48 48 16)

так или иначе, это все не рекурсивные решения ((
dirty trick из-за памяти в общем случае тоже. навеное, не классное решение.
al_orange
.
py.user.next
al_orange
для проверки можно 7168 юзать, ответ: 80 16 16 16, не 48 48 48 16
  
>>> import lagsq
>>> 
>>> lagsq.find_lagrange_squares(7168)
(80, 16, 16, 16)
>>>

al_orange
Прикреплённый файлы:
attachment tmp.png (35,1 KБ)
Там код топикстартера. Вот этот бери.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB