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
Post a Comment