在課堂上,我們給出了2^n mod(m)的算法。2^n mod(m)算法
to find 2^n mod(m){
if n=0 {return 1;}
r=2^(n-1)mod(m);
if 2r < m {return 2r;}
if 2r > =m {return 2r-m;}
}
我們被告知運行時是O(n *尺寸(μm)),其中的M尺寸爲以m比特的數量。
我瞭解n部分,但我不能解釋大小(m),除非是因爲涉及到減法。任何人都可以對此有所瞭解嗎?
在此先感謝。
*你在做什麼n次?你正在做一個指數,一個模數,一個比較或者一個減法。所以... –
我相信'r = 2 ^(n-1)mod(m);'是遞歸調用同一個函數 – Slartibartfast
它是O(n)好的。 O(n)== O(n * some_k)。儘管'sizeof(m)'可以適用於任意大小的'm',只有固定大小的算術硬件。 – ruslik