3

Помощь насчёт кода Python

Совсем недавно начал изучать Питон, по советам, которые я нашёл на Пикабу, полез проходить курс на Степике. И в одном из заданий было описание числа Рамануджана, а по заданию нужно было найти ещё 4, подобных числу Рамануджана, числа. Написал я этот код:

Помощь насчёт кода Python

Но, по непонятным мне причинам, он оказался неверным. Подскажите, кто знает, в чём моя ошибка?

Программирование на python

936 постов11.9K подписчика

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

Автор поста оценил этот комментарий

может ошибка в том что ты спрашиваешь решение на пикабу а не каком-нить гитхабе или ещё чем-то тематическом

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Судя по некоторым комментариям-возможно, но я не против юмора) Но, я думаю найдутся люди, способные мне помочь.
показать ответы
0
Автор поста оценил этот комментарий

ты находишь 4 числа, а i печатаешь для последнего из них, по идее i печатать надо в районе i == k**3 + j**3, а break делать там, где SummChisel == 4

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Я нахожу не 4 числа, а 4 метода нахождения этого числа с помощью j ** 3 + k ** 3.

И выводится каждое число, имеющее 4 метода нахождения, здесь всё верно, вроде.

показать ответы
13
Автор поста оценил этот комментарий

Перебора range до такой кучи девяток ты будешь ждать до второго пришествия

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Так я же поставил break, чтобы код кончался когда находит 5 чисел.
показать ответы
0
Автор поста оценил этот комментарий
А про кодстайл и пеп8 уже шутки были?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Ну пошути, что уж теперь) Вроде стараюсь придерживаться правил красивого кода, которые я знаю, но таких не очень много)
показать ответы
0
Автор поста оценил этот комментарий

Ты ж потом числа скажи, даже интересно, добрался до ноута, у меня вышло:

4104

13832

20683

32832

Время: 10s
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Хоть я и с опозданием, но все числа у вас сходятся.
показать ответы
1
Автор поста оценил этот комментарий

возьми кубический корень из 1730

там чуть больше 12 выходит

если ты 13 возведешь в куб, то число точно будет больше 1730

какой смысл итерировать дальше?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Спасибо, обдумаю это.
3
Автор поста оценил этот комментарий

а к int типу кто будет приводить? Пушкин?)

у тебя float после деления получается

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
А как вы поняли, что именно до корня кубического нужно вычислять? Случайно или какая-то логика есть?
показать ответы
3
Автор поста оценил этот комментарий

а к int типу кто будет приводить? Пушкин?)

у тебя float после деления получается

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

О, благодарю! Приводил к int до этого, но машинально вместо + 1 поставил - 1, это привело к ошибке и я подумал, что ваш метод не работает в принципе, а опять оказалось, что я дурак)

1
Автор поста оценил этот комментарий

и второй момент, зачем ты итерируешь j,k до i ?

для числа 1730 ты пройдешься около 3млн раз

но если ты будешь итерировать до i^(1/3) + 1

то только 144 раза

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не работает. Либо я дурак и не понял.

Иллюстрация к комментарию
Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий

так же есть подозрительное место с обнулением SummChisel. Почему оно обнуляется не в начале каждого цикла, а только при совпадении

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо! Вы действительно правы, теперь всё находит верно, но на это уйдёт часов 20, наверное, так-что буду думать над оптимизацией)

показать ответы
0
Автор поста оценил этот комментарий

так же есть подозрительное место с обнулением SummChisel. Почему оно обнуляется не в начале каждого цикла, а только при совпадении

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

А вот это хорошая мысль! Исправил, подожду несколько минут, вдруг нормально пойдёт.

0
Автор поста оценил этот комментарий

если хочешь убрать перестановки, то лучше делать j от 1 до i+1, а k от j до i+1. И цикл быстрее и от перестановок избавляет

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Поменял, от перестановок вроде избавился, вот только зачем, если основная ошибка явно в другом. Но, всё равно спасибо.
0
Автор поста оценил этот комментарий

А твое решение находит лишние или не находит нужные? или и то и другое?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
До нужных я решение не доводил, там очень долгий подсчёт, так-что хз. А выдаёт лишние. (Само 1729 тоже выдаёт, но я не могу с точностью сказать, совпадение это или нет)
0
Автор поста оценил этот комментарий

наводящий вопрос: почему у тебя в программе идет поиск чисел, которые можно разложить на кубы именно четырьмя разными способами? почему не двумя или тремя?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Я попытался учесть перестановку местами j и k, поэтому 4 вместо 2-ух. А 2 по условию задания дано. (Да и число Рамануджана на 2-ух вариантах строится)
показать ответы
0
Автор поста оценил этот комментарий

Я предполагаю, что проверка на то, что мы нашли 4 представления обусловлена тем, что ты таким образом учитываешь, случаи перестановки j и k местами, однако ты таким образом теряешь случаи, когда одно из представлений два одинаковых куда (j == k), также ты упускаешь числа, представимые более чем двумя суммами кубов.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Сделал так:
for k in range(1, i):
if j != k:
и т.д.. Но всё равно не те числа.
показать ответы
0
Автор поста оценил этот комментарий

Я предполагаю, что проверка на то, что мы нашли 4 представления обусловлена тем, что ты таким образом учитываешь, случаи перестановки j и k местами, однако ты таким образом теряешь случаи, когда одно из представлений два одинаковых куда (j == k), также ты упускаешь числа, представимые более чем двумя суммами кубов.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Хм, про k == j не подумал. А более, чем двумя суммами кубов мне и не нужно, либо я неправильно понял вас. Но спасибо!
5
Автор поста оценил этот комментарий
Ну во-первых непло было бы приложить , что выдает интерпретатор в качестве описания ошибки , а во вторых 9999999999999999 выходит за пределы стандартного типа для целых чисел.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Ошибки не выдаёт, просто числа совсем не те, что нужно выдаются.
показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества