c - Modular Exponentiation -


सी / सी ++ में मैं कैसे (a ^ b)% m की गणना कर सकता हूँ where बी 64 बिट्स में फिट नहीं है? दूसरे शब्दों में, क्या b के बजाय b% m का उपयोग करके उपरोक्त मान की गणना करने का एक तरीका है?

और इसमें कोई एल्गोरिथ्म है जो गणना कर सकता है O (लॉग (बी)) समय या O (लॉग (बी% m)) में परिणाम समय

< Div class = "post-text" itemprop = "text">

के अनुसार, यदि a और m coprime हैं:

एक b mod m = a b mod phi (m) mod m

अतः यदि b बड़ा है, आप b की बजाय b% phi (m) मान का उपयोग कर सकते हैं। phi (m) है, जिसे आसानी से गणना की जा सकती है अगर आपको m का मुख्य गुणक पता है।

एक बार जब आप < कोड> बी इस तरह से, O (लॉग (बी% पीएचआई (एम)) में मॉड्यूलर एक्सपोनन्टिशन की गणना करने के लिए उपयोग करें


Comments

Popular posts from this blog

java - NullPointerException for a 2d Array -

python - Assemble mpeg file unable to play in mediaplayer -

c# - NameSpace Manager or XsltContent to parse aspx page -