И, возможно, мы по-разному понимаем слово "пересчитывать". Вот нам известны правильные константы по C9. А нам нужно узнать C10. И, для того чтобы узнать C10, нам всё равно нужно пересчитать заново все константы по C9 и только потом уже считать C10. Алгоритм такой, рекурсивный. Я правильно понимаю?
Под "пересчитывать" я понимал "паттерны, в константы которых вкралась ошибка".
Алгоритм конечно рекурсивный, но это внутри программы, снаружи можно задавать сразу желаемое количество констант, например если вам нужны все по С8, то можно сразу указать maxn=8, меньшие maxn считать не надо, они будут посчитаны в рамках maxn=8:
Код:
>hl1-vc-time2.exe 8
[8858334131036034422e19, 1471847885881400235e21, 1170506374611652126e22, 5931334860115340239e22, 2150971431509499832e23, 5944042591206575619e23, 1301368653107641784e24, 2317077125010388921e24, 3417477202058098416e24]
Time: 42.387s
Считать константы в порядке увеличения maxn может пригодится для
грубой оценки времени каждого счёта, но никак не для получения самих констант.
Ну вот я пересчитал, кстати, 21-324-1, для которого у Вас написано "ERROR!". Но все константы кроме C3 точно такие же как и при счёте по старой hl1-vc-time. А C10 точно такая же. Но новый счёт был почти втрое быстрее старого! Всего-то 1 час, 36 минут.
Хм, оказывается я ошибся в программе проверки наличия ошибок в константах, там надо не CC[#v+i], а CC[#v+i-1]. И тогда вывод про 13 паттернов будет таким:
Код:
[0, 12, 30, 42, 54, 60, 72, 84, 114, 120, 162, 204, 210, 240, 252, 264, 270, 282, 294, 312, 324]: [6, 1, 1, 9, 4, 1, 5, 1, 3, 5, 8] - ERROR!
[0, 12, 30, 42, 54, 60, 84, 114, 120, 144, 162, 180, 204, 210, 240, 264, 270, 282, 294, 312, 324]: [1, 3, 3, 2, 1, 4, 1, 3, 7, 1, 2]
[0, 6, 18, 36, 48, 60, 66, 78, 120, 126, 168, 210, 216, 258, 270, 276, 288, 300, 318, 330, 336]: [9, 2, 2, 1, 8, 3, 1, 2, 5, 1] - ERROR!
[0, 6, 18, 36, 48, 60, 66, 90, 120, 126, 168, 210, 216, 246, 270, 276, 288, 300, 318, 330, 336]: [1, 3, 3, 2, 1, 4, 1, 3, 7, 1]
[0, 6, 18, 36, 48, 66, 78, 90, 120, 126, 168, 210, 216, 246, 258, 270, 288, 300, 318, 330, 336]: [6, 1, 1, 1, 5, 2, 6, 1, 3, 7, 1]
[0, 6, 18, 36, 48, 66, 78, 90, 126, 150, 168, 186, 210, 246, 258, 270, 288, 300, 318, 330, 336]: [7, 1, 1, 1, 6, 2, 8, 2, 4, 9] - ERROR!
[0, 6, 18, 36, 60, 66, 78, 90, 120, 126, 168, 210, 216, 246, 258, 270, 276, 300, 318, 330, 336]: [1, 2, 2, 1, 9, 3, 1, 3, 6, 1] - ERROR!
[0, 6, 18, 36, 60, 66, 78, 108, 120, 150, 168, 186, 216, 228, 258, 270, 276, 300, 318, 330, 336]: [1, 3, 4, 2, 1, 5, 1, 4, 9, 1] - ERROR!
[0, 6, 18, 48, 60, 66, 78, 90, 120, 126, 168, 210, 216, 246, 258, 270, 276, 288, 318, 330, 336]: [1, 3, 4, 2, 1, 5, 1, 4, 1, 2]
[0, 6, 18, 48, 60, 78, 90, 120, 126, 150, 168, 186, 210, 216, 246, 258, 276, 288, 318, 330, 336]: [2, 5, 5, 3, 2, 7, 2, 6, 1, 2]
[0, 6, 30, 36, 48, 78, 90, 96, 126, 156, 168, 180, 210, 240, 246, 258, 288, 300, 306, 330, 336]: [1, 2, 3, 2, 1, 4, 1, 3, 8, 1]
[0, 6, 30, 48, 78, 90, 96, 126, 138, 156, 168, 180, 198, 210, 240, 246, 258, 288, 306, 330, 336]: [1, 3, 3, 2, 1, 5, 1, 4, 1, 1]
[0, 18, 48, 60, 78, 84, 90, 138, 144, 168, 174, 180, 204, 210, 258, 264, 270, 288, 300, 330, 348]: [1, 3, 3, 2, 1, 5, 1, 5, 1, 2]
И да, в первом паттерне ошибка лишь в C3, остальные правильные. А в третьем вообще лишь C0, что считается секунду, хотя реально она почему-то правильная, вот не знаю почему.
А в 7-м, C4=9190402376787882102e?, что меньше

и она тоже правильная.
Вот так больше нравится?
Да, спасибо.