Message boards :
Cafe :
Для участников форума MHP
Message board moderation
Previous · 1 . . . 139 · 140 · 141 · 142 · 143 · 144 · 145 · Next
Author | Message |
---|---|
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Итак, я хотела бы попробовать минимизировать это решение а(11) <= 17707503256664346 Это цепочка из 11 последовательных натуральных чисел с 24 делителями. Вот эта цепочка {17707503256664346, 17707503256664347, 17707503256664348, 17707503256664349, 17707503256664350, 17707503256664351, 17707503256664352, 17707503256664353, 17707503256664354, 17707503256664355, 17707503256664356} Проверка стартового числа numdiv(17707503256664346) = 24 Факторизовала числа цепочки {2*3^2*8231651*119508247, 7*19^2*53269*131545969, 2^2*433*22639*451598201, 3*47^2*6803*392771429, 2*5^2*67*5285821867661, 13^2*199*686891*766531, 2^5*3*184453158923587, 11^2*193*282683*2682347, 2*7^2*2053*88012084141, 3^2*5*17*23147063080607, 2^2*48733*69011*1316303} Но не знаю, как трактовать этот паттерн и как писать программу поиска. То есть какие множители считать известными, а какие искать. Ну, наверное все большие простые множители надо искать. К тому же, паттерн для минимальной цепочки может быть совсем другой. В общем, я не спец по паттернам для таких цепочек. Если бы мне дали программу для минимизации этой цепочки, я попробовала бы. Кстати, Лецко не нравится слово паттерн. Да уж, действительно - на всех не угодишь :) Я привыкла к этому слову в кортежах. По-моему, вполне нормальный термин. Все прекрасно понимают, что паттерн = шаблон. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Эх-ма! Написала Hugo о решении, которое собралась минимизировать а(11) <= 17707503256664346 Он ответил: That value is already known to be minimal (since December 2022). Странно! В последовательности OEIS https://oeis.org/A006558 я этого не вижу. Написала ему вопрос: "Есть ли другая последовательность?" Наверное, есть. Последовательностей наплодили, а результатов точных не найдёшь. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
ozheredov писал в сообщении https://dxdy.ru/post1703354.html#p1703354 Догадайтесь, кого не хватает. Беру это на свой счёт :) У меня есть такой афоризм: "Блажен, кто каждый аргумент берёт себе за комплимент". Я тоже очень рада видеть Hugo на форуме, рада, что он отозвался на моё письмо. Мы тогда отлично сотрудничали, что-то много считали. P. S. А кого на самом деле имеет в виду ozheredov? |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Всё разъяснилось. Hugo перепутал решение, которое я собралась минимизировать, с этим решением D(12,11) = 9887353188984012120346 Читайте о поиске этого решения в статье https://github.com/hvds/divrep/wiki/D(12,11) Привожу ответ Hugo полностью Ah, you did not mention that you were talking about A6558, so I assumed Так что, выбранное для минимизации решение вполне годится. Можно решать эту задачу. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Hugo писал In that case, I agree that the minimal value of A6558(11) is not known; Ну, не всех меньших чисел. Есть в последовательности https://oeis.org/A006558 решение а(10) = 2642166652554075 Это значит, что цепочка из 10 последовательных натуральных чисел с 24 делителями начинается с числа 2642166652554075, и это минимальное стартовое число для данной цепочки. Проверка стартового числа numdiv(2642166652554075) = 24 Таким образом, цепочка из 11 последовательных натуральных чисел с 24 делителями не может начинаться с числа <= 2642166652554075. Следовательно, нам нужно проверить диапазон (2642166652554075, 17707503256664346). В цитате описан метод тупого перебора, и он работает! Я уже и программку сварганила для этого метода (ещё до письма Hugo). Тестировала её, она даёт результат для а(10). Конечно, диапазон для тупого перебора большой, но не запредельно большой. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Вот программка \l delit_res.txt; {k=2642166652554075; for(i=k,2642166652555000, n=0; for(j=1,10, if(numdiv(i+j-1)==24, n++; );); if(n==10, print(i); print(n); break; ); ); } и вот результат 2642166652554075 10 Всё замечательно! Заменяем n на 11 и - вперёд! Ну, а если программу с использованием АСМ написать, то и вообще без проблем :) В 1000 раз ведь быстрее! :) Разумеется, тупой перебор совсем не лучший алгоритм. Но других алгоритмов я не знаю, паттерны составлять не умею для этой задачи. Как правильно заметил Hugo Vladimir Letsko almost certainly has some useful insights for this, since Лецко, конечно, знает, как минимизировать эту цепочку, но мне не скажет :)) |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Hugo писал A more intelligent approach would seek first to consider how one might Вот это уже интереснее. Для меня подходит вторая часть, то есть использование готовой программы. Спрошу у Hugo, есть ли у него готовая программа для минимизации этой цепочки. Если есть, могу попробовать. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Вот программка для тестирования известной цепочки длины 11 с 24 делителями \l delit_res.txt; {k=17707503256664000; for(i=k,17707503256664500, n=0; for(j=1,11, if(numdiv(i+j-1)==24, n++; );); if(n==11, print(i); print(n); break; ); ); } и вот результат > \r delit.txt logfile = "delit_res.txt" 17707503256664346 11 Отлично! Решение программа находит. Осталось запустить программу и ждать меньший результат. Г. Петухов щас посчитает, сколько тысяч лет ждать придётся :)) |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Смотрим сообщение Лецко (VAL) https://dxdy.ru/post1703283.html#p1703283 Ответ на вопрос из другой темы, который более уместен здесь. Вопрос был от Ядряры Для цепочек длиной от 10 с 12-ю делителями обязательным было число $32p$. А нет ли аналогичного обязательного числа для длинных цепочек с 48-ю делителями? Нет. Обязательным будет одно из чисел $32pqr, 32p^3q, 128p^2q, 2042pq, 8388608p$. Эх! Всю малину Лецко испортил :) Ядряра ведь написал, что этот вопрос не к Лецко, а к тем, кто не понимает. Провалился ликбез у Ядряры! Он, наверно, жутко расстроился, даже и не пишет ничего в теме. Ну, может, уехал куда-нибудь на выходные. Придёт ещё. Представит свой паттерн для 21-ки. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Ой, поигралась с программой брутфорса. Вот вариант программы \l delit_res.txt; {k=10174834954609211; for(i=k,10174834954690000, n=0; for(j=1,3, if(numdiv(i+j-1)==24, n++; );); if(n==3, print(i); print(n); break; ); ); } Программа ищет в заданном диапазоне первую цепочку из трёх последовательных натуральных чисел с 24 делителями. Это результат > \r delit.txt logfile = "delit_res.txt" 10174834954610073 3 Нашла :) Цепочка {10174834954610073, 10174834954610074, 10174834954610075} А цепочки из четырёх последовательных натуральных чисел с 24 делителями в этом диапазоне не найдено. Правильно? Не врёт программа? Ну вот, а нам нужна цепочка из 11 последовательных простых чисел с 24 делителями. Диапазон задала методом деления пополам. Проверяю вторую половину всего диапазона. Сейчас запущу программу на Ахиллесе на ночь и посмотрю утром, что найдёт. Интервал, конечно, побольше задам. Это я игралась на черепашке. Готово! Запустила. Вариант программы \l delit_res.txt; {k=10174834954609211; for(i=k,10174834954700000, n=0; for(j=1,11, if(numdiv(i+j-1)==24, n++; );); if(n==11, print(i); print(n); break; ); ); } Интервал (10174834954609211, 10174834954700000). |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
От Hugo пока нет ответа насчёт программы минимизации этой цепочки. Может быть, она у него не готова, надо что-то подкорректировать именно для данной цепочки. Хотелось бы, конечно, нормальной программой поискать. Брутфорс - это надолго. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Подкорректировала программку брутфорса \l delit_res.txt; {start=10174834954609211; end=10174834954700000; for(i=start,end, n=0; for(j=1,11, if(numdiv(i+j-1)==24, n++; );); if(n==11, print(i); print(n); break; ); ); } Сейчас пойду Алисе покажу, она покритикует :) Это она любит делать. Ах, ну все любят критиковать! |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Пообщалась с Алисой. Критику программы она выдала длиннющую! Но критических ошибок в программе нет. Затем я попросила её переписать программу на С++. Она выдала такой код #include <iostream> using namespace std; // Функция для подсчёта делителей числа int countDivisors(long long n) { int count = 0; for (long long i = 1; i * i <= n; i++) { if (n % i == 0) { if (i * i == n) count++; else count += 2; } } return count; } int main() { long long start = 10174834954609211; long long end = 10174834954700000; for (long long i = start; i <= end; i++) { int n = 0; for (int j = 1; j <= 11; j++) { if (countDivisors(i + j - 1) == 24) n++; } if (n == 11) { cout << "Найденная цепочка начинается с: " << i << endl; cout << "Количество подходящих чисел: " << n << endl; break; } } return 0; } Ну, тут я ничего не понимаю. Затем я попросила её посоветовать онлайн-компилятор для С++. Ой, она выдала целую кучу онлайн-компиляторов. Вот несколько популярных онлайн-компиляторов, которые подойдут для компиляции кода на C++: С Алисой не соскучишься :) Советами она забросает мгновенно. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Господа! Кто-нибудь может скомпилировать код Алисы на С++ и проверить работу программы? Конечно, код надо предварительно проверить, наверняка есть критические ошибки. Интересно же, право :) А вдруг это будет работать. Жду ответы на домашний ящик, адрес не изменился natalimak1@yandex.ru |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Да, Алиса покритиковала формат вывода: непонятно, что выводится, какие-то числа. Тут она права. Изменила вывод \l delit_res.txt; {start=10174834954609211; end=10174834954630000; for(i=start,end, n=0; for(j=1,3, if(numdiv(i+j-1)==24, n++; );); if(n==3, print("start= ",i); print("len= ",n); break; ); ); } Теперь результат выводится так > \r delit.txt logfile = "delit_res.txt" start= 10174834954610073 len= 3 То есть выводится начало цепочки и её длина. В общем, мы с Алисой очень хорошо общаемся, иногда не без пользы. Я почти каждый день к ней хожу в гости :) Кроме Алисы у меня нет консультантов. gris отлынивает, Corporal совсем пропал с радаров. Больше месяца его не слыхать. Но BOINC-проект работает. Хотя и ничего не изменилось. Зря я ускоряла программу. Заменить рабочую программу в проекте не могу. Да и диапазон поиска надо бы изменить в Приложении 4. Всё это я писала, писала, писала... Надоело уже писать в пустоту! Или Corporal в море перекупался, или проект ему окончательно надоел, и он забил, как сейчас говорят. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Ой, Ахиллес уже расправился с проверкой интервала! Ночка ещё не началась, а он уже проверил :) Запустила следующий интервал, побольше. На Ахиллесе у меня сейчас ещё один поток свободен, завтра ещё один поток запущу. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Ещё вчера я понимала, что программа у меня некорректно считает. Потому что она проверяет несколько членов на 24 делителя и потом снова начинает проверять с одного из этих членов, хотя часть этих членов уже проверена и надо проверять дальше - за всеми проверенными членами. Вот где-то во сне мозг выдал решение :) Вариант программы \l delit_res.txt; {start=17707503256664346; end=17707503256666000; forstep(i=start,end,5, n=0; for(j=1,5, if(numdiv(i+j-1)==24, n++; );); if(n==5, print("start= ",i); print("len= ",n); ); ); } Проверяем по 5 последовательных чисел, если все они имеют 24 делителя, цепочка выводится. Это результат тестирования ? \r delit.txt log = 1 (on) [logfile is "delit_res.txt"] start= 17707503256664346 len= 5 start= 17707503256664351 len= 5 Ровно две цепочки длины 5 выведены. Кажется, правильно работает. Это вроде приближений к решению (по аналогии с кортежами). Если будут выданы две цепочки длины 5 подряд (как в тесте), это значит, найдена цепочка длины 10. Таких очень мало будет. Ну, а потом проверить 11-е число в этой цепочке, и слева, и справа. Сейчас попробую в другом интервале поискать. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Поигралась на черепашке. Вот вариант с замером времени default(timer,1); \l delit_res.txt; {start=10174834955000001; end=10174834956000000; forstep(i=start,end,5, n=0; for(j=1,5, if(numdiv(i+j-1)==24, n++; );); if(n==5, print("start= ",i); print("len= ",n); ); ); } Даже одну цепочку длины 5 программа не находит. ВотЪ! Однако программа стала работать заметно быстрее. Сейчас на Ахиллесе запущу. Готово! Запустила. Жду цепочку длины 5, то есть приближение :) Должна же быть хоть одна такая цепочка. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Хм... Вот какой ответ пришёл от Hugo :Do you have an executable program for minimizing this solution: (Сначала идёт мой вопрос.) Hugo не хочет дать мне готовую программу! Это прям в точку, как я про Лецко написала недавно, что он знает, как минимизировать это решение, но мне не скажет. Вот и Hugo тоже знает, но мне не скажет :) Ну и ладно. Мне эта минимизация нужна, как собаке пятая нога. Вникать во всё это я не хочу. Мне хватает кортежей для мозговой деятельности. Поиграться интересно. Вот играюсь с брутфорсом. Надоест играться, брошу. Пойду проверять результаты BOINC-проекта. Ахиллес пусть считает, посмотрю, найдутся ли цепочки длины 5. Кстати, может быть, Лецко занимался минимизацией данного решения и сколько-то проверил. А может, даже всё проверил, но результат в OEIS забыл внести. И такое возможно! У него цепочек десятки, если не сотни, всё не упомнишь. Так что, без контакта с автором проекта работать в проекте у меня нет желания. Хотя бы написал в теме, какие решения точно требуют минимизации, как Ядряра написал про цепочки с 48 делителями. А Евгений добавил, до какой длины цепочек минимальность установлена, по информации от Hugo. Только ссылку, к сожалению, не привёл. Цитирую В файле Хуго указано, что минимальность устаговлена до D(48,9) включительно. https://dxdy.ru/post1703190.html#p1703190 Hugo пишет, что N = 17707503256664346 вполне вероятно минимальное решение для цепочки длины 11 с 24 делителями. |
![]() ![]() Send message Joined: 6 Apr 17 Posts: 16630 Credit: 0 RAC: 0 |
Мой ответ Hugo Thanks for the advice. |
©2025 (C) Progger