我正在为数论中的一个研究项目编写一些C代码,它需要用许多不同的模块用模块化算法进行大量操作。简单地说:我需要多次执行(a * b) % n操作。我的问题是:使用Montgomery模乘(只使用加法和乘法)而不是C模运算符% (它翻译成a % n = a - n*(a / n)并使用除法)会带来更快的执行速度吗?直觉上,我想说答案是:不,因为在个人电脑上的(字大小)除法比(字大小的)乘法要昂贵得多,而蒙哥马利的减少实际上会造成开销。
谢谢你的建议。更新:一方面,根据保罗·奥格尔维
我正在尝试使用dp来计算c中的ncr(组合)。但它在n=70上失败了。有人能帮上忙吗?unsigned long long ncr( int n , int r)unsigned long long c[1001];c[0]=1; c[i]= ((unsigned long long) (c[i-1]) * (unsigned long long)( n-i+1))%(unsigned long long) (10000000