py.user.next
Здесь, я так понял, нельзя фокусироваться на этом конкретном рассматриваемом диапазоне от 35000000 до 40000000 и использовать какие-то его свойства, присущие только ему, потому что в любой момент они могут взять и поменять диапазон на другой и сказать “а вот теперь для этого диапазона найдите всё то же самое”, из-за чего всё решение сразу посыпется, потому что чудесные свойства диапазона исчезнут.
это не свойства диапазона, это свойства нечетного количества делителей, число имеет нечетное количество делителей если имеет целочисленный корень. Там дальше наверно еще какаято математика, но я ее не могу сейчас привети. Типа того что если количество делителей четное, то и количество, нечетных делителей тоже четное. но повторюсь подвести под это математику я сейчас не могу. Чисто эмпирическионо выходит так, причем диапазон достаточно большой чтобы не считать что это свойство присуще исключительно текущему диапазону.
py.user.next
Тут есть вещи, которые могут пригодиться
Да я все это смотрел уже, признаки делимости они хорошо себя показывают для решения в уме/тетрадке, но не в коде. Допустим признак делимости на 9: если сумма всех чисел делиться на 9. Тоесть нам нужно сначала Х-значное число разбить на X цифр,(в пайтоне это еще просто, по крайней мере с точки зрения написания кода, а в каконить условном паскале придеться сделать Х операций целочисленного деления) потом просумvировать их и посмотреть делятся они без остатка на 9… не проще ли, с точки зрения быстродействия, просто сразу посмотреть делиться ли число на 9 без остака? без всех этих преобразований и прочего.
Учитывая достаточно большой диапазон, тут должен быть какойто критерий позволяющий просто отбросить большую часть чисел..
py.user.next
Да и единица тоже является нечётным делителем, поэтому мне непонятно, почему её решили исключать из этих пяти делителей? Ну и что, что единица. Нормальный делитель, ничем не хуже других.
условности

py.user.next
Но я думаю, нужно число поделить на два и потом сверху вниз двигаться через одно число по нечётным.
тоже не вариант, ведь поделив на четное вплолне можем получить нечетное… перебором оно решается делением на (от 2 до int(корня квадратного из числа))
Ocean
Можно применить решето Эратосфена и из искомого диапазона вычеркнуть сразу все простые числа, чтобы не тратить время на проверку каждого из них на множественные делители.
наверно можно но сильно сомневаюсь что в искомом диапазоне их будет сильно много, гугел говорит что примерно 800 на миллион. тоесть мы отсеем менее 0.01% всех чисел, это не сильно ускорит алгоритм.
Ускорить можно если перебирать не весь диапазон, а только от 2-х до корня квадратного из числа, это ускоряет на данном диапазоне процесс почти в шесть тысяч раз, но всеравно выходит достаточно долго, чтото около 15-ти минут на миллион, а у нас их 5.
тут должно быть чтото простое и очевидное, просто на ум не приходит.