为了计算每个数字的阶乘,直到一些大数量模数为一个数并存储在1到n(10000000)的数组中。我一直在尝试一个天真的过程,为每个数字迭代并计算它并采用模数并使用先前的计算结果。是否有任何好的算法来执行此操作以获得最快的执行时间?我尝试过的代码如下:
int a[10000000]={};
int m;//some large number
a[0] = a[1] = 0;
for(int i = 2; i < 10000000; i++)
{
a[i] = a[i] % m;
}
答案 0 :(得分:2)
如果模数m小于或等于阶乘参数n,那么n! = 0 mod m (因为m将是n的除数!)。