模运算的时间复杂度

时间:2012-01-10 14:36:46

标签: math matlab time-complexity

说我想计算一个(mod n)。这个时间复杂度是多少?我正在使用Matlab,我不确定Matlab如何计算它。是否将a除以n,减去整数部分,然后乘以n?

问'这个时间的复杂程度是否有意义?'

2 个答案:

答案 0 :(得分:2)

询问长数a和/或n的时间复杂度是有意义的。相关领域称为计算数论。例如,请参阅此book

通常的整数算术(最有可能由Matlab使用)是在恒定时间内执行的ALU操作(或多个操作)。在这种情况下,必须记住整数的大小是受限制的。

答案 1 :(得分:0)

根据内置的帮助,Matlab将MOD(x,y)计算为:

MOD(x,y)= x - floor(x./y)。* y

其中floor函数向负无穷大舍入(即剥去小数部分)。

只要不计算mod(X,y),其中X是向量,运行时将是常量,在这种情况下,它将与向量中的元素数量线性比例