С помощью отображённого на катринке кода можно вывести все точные степени (не превосходящие данного числа), но только с конкретным показателем, введённым пользователем. А как вывести все точные степени вообще? Допустим, я хочу вывести все точные степени, не превосходящие числа 310610407. Как это сделать? задан 16 Окт '21 10:44 Казвертеночка
показано 5 из 10
показать еще 5
|
@falcao, кажется, работает! отвечен 16 Окт '21 13:03 Казвертеночка 1
Вообще говоря, сортировать множество -- довольно странно, в множество же по определению неупорядоченно. Странно, что функцию sorted можно применить к множеству. Хотя, возможно, в таком случае она возвращает список.
(16 Окт '21 16:41)
haosfortum
@haosfortum, к тому же у меня авнакод получился, ибо при вводе числа, меньшего 4, всё летит к бениной маме даже не начавшись 😭😭😭
(16 Окт '21 16:44)
Казвертеночка
1
@Казвертеночка, если ввести k=3, то d=1, и у вас цикл for будет in range(2,2), то есть 0 итераций.
(16 Окт '21 16:47)
haosfortum
1
@haosfortum: сортировать можно массив, такое иногда бывает нужно, то есть повтор чисел -- вещь вполне обычная. Как это называется во встроенной процедуре или на уровне идентификаторов, уже не так важно. @Казвертеночка: если можно пользоваться встроенными библиотечными функциями, то проблемы вообще нет. И можно было также брать упорядоченный список, и новый элемент вставлять при помощи половинного деления.
(16 Окт '21 18:33)
falcao
1
@falcao, дело не в этом. Вызов set(list) превращает список в множество, то есть убирает повторы и делает порядок элементов не важным. А к этому множеству уже применяется функция sorted. То есть, она, видимо, строит список из множества.
(16 Окт '21 20:19)
haosfortum
1
@haosfortum: так это уже вопрос о синтаксисе языка. Я с деталями совершенно не знаком. Но если есть встроенная функция, про которую можно сказать, что она сортирует элементы множества, то я здесь никакого противоречия не вижу. Ведь множество программно представляется массивом -- его и сортируем. Причём эта операция даже математически корректна, так как если одно и то же множество по-разному задать в виде списка, результат от этого не поменяется. Даже в математической статье можно сказать что-то типа "расположим элементы множества в порядке возрастания", если оно состоит из чисел.
(16 Окт '21 20:33)
falcao
@falcao, а, ну да, теорему Цермело никто не отменял
(17 Окт '21 19:37)
haosfortum
1
@haosfortum: Вы про что? Здесь же только конечные объекты рассматриваются. Там всё доказывается по индукции, то есть в рамках теории множеств без AC, которой теорема Цермело эквивалентна.
(17 Окт '21 21:33)
falcao
@falcao, ну, это не отменяет того, что она справедлива и для конечных множеств (пусть это и очевидно). Моя реплика была комментарием к тому, что "эта операция математически корректна".
(17 Окт '21 21:55)
haosfortum
1
@haosfortum: я всё равно не вижу смысла в обосновании, использующем аксиому выбора. Здесь ведь даже аксиома счётного выбора не нужна.
(17 Окт '21 22:28)
falcao
показано 5 из 10
показать еще 5
|
https://ru.stackoverflow.com/
@Роман83, там регистрироваться надо.
@Казвертеночка: для начала надо найти такое минимальное d, для которого 2^{d+1} > N, где N -- заданное большое число. После чего в цикле выписать квадраты, кубы, ... , d-е степени. То, что получилось, далее можно упорядочить.
а что мешает сделать цикл по показателям?
до корня из к
@haosfortum, сделать цикл по показателям мешает то, что степени будут выведены беспорядочно. Например, если выводить сначала квадраты, а потом кубы, что число 8 будет выведено после 9. Ну а уж единица, так та вообще будет выведена более одного раза.
@falcao, а как упорядочивать? Я в Питоне только первые шаги делаю.
@Казвертеночка: это задача уже не столько по программированию, сколько по математике. Алгоритмов сортировки имеется целая куча. Среди них есть относительно быстрые, а есть более медленные, но их проще запрограммировать. Например, можно рассмотреть сортировку "пузырьками".
Есть ещё простой рекурсивный алгоритм. Делим массив примерно пополам, сортируем половины. Потом используем подпрограмму слияния двух отсортированных массивов -- она лёгкая.
@falcao, спасибо, я как раз в эти минуты уже и пытаюсь довести всю эту квеппетенель до ума. Как только получится, так сразу опубликую здесь.
@falcao, кажется, работает! Катринка с кодом внизу, в ответе.