Да, не вижу, мало ли что Вы там вычислили,
Разве из формул, которые я приводил на
52-й странице не очевидно, что BC зависит только от длины и многократно вычислять её в цикле совершенно необязательно?
, покажите где они явно используются в программах?
Желаете посмотреть мои старые программы? Там поначалу использовались.
Или имеете в виду, что в теме не было показано использования BC по отдельности?
А зачем нужно было использовать BC (то есть C02..19) по отдельности, если я как раз искал именно
универсальный способ вычисления C ? На тот момент это было ни к чему. Считалась BC весьма быстро, потому и использовал prodeulerrat, зато менял каждый раз только паттерн.
Особенно в вот этой программе, на базе которой я и пишу вычисления?
Эта самая важная часть программы была выложена для обсуждения вопроса
универсальности, а не скорости. Кроме вычисления BC, в ней выполнялись одинаковые действия вычисления разрешённых остатков:
Код:
forprime(p=3,#v, m=p-#Set(-v%p);
...
forprime(p=#v+1,v[#v]/2, m=p-#Set(-v%p);
А также циклические умножения:
Код:
MC *= m/p/(1 - 1/p)^#v);
...
PM *= m/(p - #v));
Так что сам код говорит, что он не оптимизирован по-скорости. И я делал именно такое раздельное вычисление, чтобы не запутаться.
Кстати, всё вычисление BC*PM*MC сокращается до просто CC[#v+k]*vecprod() от вектора количества разрешённых остатков (произведение всех m в ваших формулах, то что раньше в соседней теме называли количеством формул), а CC[] считается один раз в начале так как зависит только от длины паттерна.
Вот именно.