说我想计算一个(mod n)。这个时间复杂度是多少?我正在使用Matlab,我不确定Matlab如何计算它。是否将a除以n,减去整数部分,然后乘以n?
问'这个时间的复杂程度是否有意义?'
答案 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是向量,运行时将是常量,在这种情况下,它将与向量中的元素数量线性比例