Я прочитал много хорошего algos, чтобы вычислить n! mod m, но они обычно были действительными, когда m было простым. Я хотел бы знать, существует ли хорошие алго если мин не первична .Я бы полезно, если кто может написать основную функцию алго too.I использовали
Расчет n! mod m, когда m не является простым
long long factMOD(long long n,long long mod)
{
long long res = 1;
while (n > 0)
{
for (long long i=2, m=n%mod; i<=m; i++)
res = (res * i) % mod;
if ((n/=mod)%2 > 0)
res = mod - res;
}
return res;
}
но получить неправильный ответ, когда я пытаюсь для печати factMOD (4,3) даже. Источником этого алгоритмом является:
http://comeoncodeon.wordpress.com/category/algorithm/
просто выполните все умножения mod m - это не может быть очень сложно. – mvp
[This] (http://tech.groups.yahoo.com/group/primenumbers/message/1095) - принимать по модулю 'm' всякий раз, когда результат умножения становится больше, чем' m'. – 2013-02-10 21:06:28
@ mvp-n дается мне порядка 10^7. Мне нужен лучший алгоритм для этого. – kavish