|
Последний раз редактировалось Dmitriy40 03.12.2025, 20:33, всего редактировалось 4 раз(а).
Вас устраивает, что 20 цепочек из 10^5 (или 185 из 10^6) остались нефакторизованными? Да. Это ведь не весь рабочий код, в нём могут быть и дополнительные проверки, например factor(x,2^24), которая ещё сколько то отбросит. Или проверка на высшие степени. Или разложение всех чисел цепочки через numdiv и вывод в лог, который потом смотрим глазками или поиском по valids или по числу делителей. 20 чисел раз в несколько секунд конечно ещё многовато, лучше пару чисел/кандидатов в минуту чтобы торможение numdiv всех чисел цепочки на них уже не сказывалось на средней скорости, но на то есть ещё проверки. Кроме того, я несколько раз дополнял своё сообщение с кодом, там есть и вариант когда от 100000 (и от миллиона) не остаётся ничего (кроме одного реального решения) - и это более чем устраивает. От 10млн предлагаемой проверкой (с проверкой и высших степеней и меньшего количества делителей) за 9 минут остаётся 15 цепочек: (Оффтоп)
Код: 52556626259340931919271848023566857910792017169: 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, valids=21, i=114551 1797366169973077798872613587903651099882336242769: 96, 96, 48, 24, 48, 24, 48, 96, 24, 48, 24, 48, 48, 48, 96, 48, 64, 48, 96, 48, 24, valids=10, i=3917478 3115348016571580612269358825334778922174542521169: 48, 96, 24, 48, 48, 64, 48,192, 48, 48, 24, 48, 24, 48, 48, 48, 48, 24, 24, 48, 48, valids=13, i=6790106 3891338855181564074751317277737153125093514695569: 48, 48, 24, 24, 48, 48, 24, 48, 48, 96, 24, 48, 48,192, 32, 48, 48, 24, 48, 24, 24, valids=11, i=8481429 5076702996049477810930436072017886929815141026769: 48, 48, 24, 24, 48, 48, 24,192, 24, 96, 12, 48, 48, 48, 96, 48, 48, 48, 96, 48,192, valids=11, i=11065008 5104506700498459464834750435516511306529044706769: 48, 48, 96, 24, 48,192, 48,192, 48, 96, 12, 48, 48, 96, 48, 48, 48, 24, 96, 24, 48, valids=11, i=11125608 7104478089091165885676758821351248322665998509969: 48, 48, 48, 48, 48, 96, 48, 48, 24, 96, 12, 24, 96, 96, 48, 48, 48, 48, 48, 48, 96, valids=13, i=15484677 7454585455400370810175306892758134240679184119569: 24,192, 48,192, 48, 96, 96, 48, 48, 96, 12, 48, 48, 48, 24, 48, 24, 24, 48, 48, 48, valids=11, i=16247759 7598686182829790132177045215275583883668833065169: 96, 96, 48, 48, 24, 48, 24, 48,192, 96, 24, 48, 96, 48, 24,192, 48, 48,192, 24, 48, valids=9, i=16561836 7945988403115875026445049094959192748229398095569: 96, 48, 48, 24, 48, 48, 48, 48, 16, 24, 24, 48, 48, 48, 48, 48, 48, 48, 24, 48, 48, valids=15, i=17318804 8002281269677976594830130720620912538271241298769: 48,192, 48, 48, 48, 24, 48, 48, 48, 48, 48, 24, 48, 48, 48, 96, 48, 48, 24, 24, 96, valids=14, i=17441498 8379745462414161388894663086383722170573919001169: 24, 48, 96, 48, 48, 24, 48, 96, 48, 24, 12, 96, 48, 24, 48, 48, 24, 96, 48, 48, 48, valids=11, i=18264206 8652543848531065840078409668524631067526167810769: 48, 48, 48, 24, 24, 48, 96, 48, 24, 48, 48, 24, 96, 48, 48, 96, 48, 48, 48, 48, 48, valids=14, i=18858788 10830491062087542448478546515493879337311477661969: 48, 48, 48, 24, 48, 48, 24, 96, 24, 48, 24, 48, 48, 48, 24, 48, 24, 24, 96, 24, 48, valids=11, i=23605767 11033364507936270365917393182067604294371660394769: 48, 48, 24, 24, 48, 96, 96, 48, 48, 48, 96, 24, 24, 96, 48, 96, 48, 48, 48, 24, 48, valids=11, i=24047943 10000000/15, time: 9min, 8,356 ms Можно взять и руками разложить любое число или даже любую цепочку и убедиться правильно ли они остались. Без подсчёта точного количества делителей (numdiv) для вывода в лог будет чуть быстрее 9 минут. Ну поскольку мы теперь знаем, что в этом эталонном наборе нет ни одной подходящей цепочки, Она есть, с i=114550, посмотрите внимательнее, её наличие это один из признаков что всё работает правильно. Потому код и для известной D(48,21), а не не найденной пока ещё D(48,23). но покажет, что проверки реально отбросили неподходящие цепочки. Это делалось по другому: выводим какие цепочки остались и изучаем их, почему они остались. Если ничего не осталось - убираем проверки по одной до получения оставшихся цепочек и проверяем их. Либо увеличиваем количество проверяемых кандидатов до получения оставшихся цепочек, но это менее надёжно.
|