2016-08-01 104 views

回答

2

您需要如果您不使用square,則兩次評估(expmod base (/ exp 2) m)。如果您將結果與let綁定在一起並將其傳遞給square,那麼它將具有相同的複雜性。

2

這不是square過程,它使速度更快,而是緩存中間值。使用let會使它一樣快:

(let ((tmp (expmod base (/ exp 2) m))) 
    (* tmp tmp)) 

關鍵的一點是,(expmod base (/ exp 2) m)只能做一次。

相關問題