मान लीजिए हमें पाँच पूर्णांक संख्याएँ a, b, c, d, n दी गई हैं। हमें ((ab)(cd)) mod n ज्ञात करना है। आउटपुट मान एक पूर्णांक संख्या है।
इसलिए, यदि इनपुट a =2, b =3, c =2, d =4, n =10 जैसा है, तो आउटपुट 6 होगा।
2^3 = 8 2^4 = 16 8^16 = 281474976710656 281474976710656 mod 10 = 6
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फंक्शन हेल्पर () को परिभाषित करें। इसमें n
- . लगेगा
- p :=n
- मैं :=2
- जबकि मैं * मैं <=n, करते हैं
- यदि n mod i 0 के समान है, तो
- p :=p - (p / i) का न्यूनतम मान
- जबकि n mod i 0 के समान है, करते हैं
- n :=(n / i) का न्यूनतम मान
- यदि मैं 2 के समान नहीं है, तो
- i :=i + 2
- अन्यथा,
- i :=i + 1
- यदि n mod i 0 के समान है, तो
- अगर n> 1, तो
- p :=p - (p / n) का न्यूनतम मान
- वापसी पी
- यदि b, 0 के समान है या (c, 0 के समान है और d, 0) के समान नहीं है, तो
- रिटर्न (ए ^ 0) मॉड एन
- यदि c 1 के समान है या d 0 के समान है, तो
- रिटर्न (ए ^ बी) मॉड एन
- यदि एक 0 के समान है या एक मॉड n 0 के समान है, तो
- वापसी 0
- यदि d 1 के समान है, तो
- रिटर्न (ए ^ बी * सी) मॉड एन
- p :=सहायक(n)
- ई:=(सी ^ डी) मॉड पी + पी
- रिटर्न (((ए ^ बी) मॉड एन) ^ ई) मॉड एन
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def helper(n): p = n i = 2 while i * i <= n: if n % i == 0: p -= p // i while n % i == 0: n = n // i if i != 2: i += 2 else: i += 1 if n > 1: p -= p // n return p def solve(a, b, c, d, n): if b == 0 or (c == 0 and d != 0): return pow(a, 0, n) if c == 1 or d == 0: return pow(a, b, n) if a == 0 or a % n == 0: return 0 if d == 1: return pow(a, b * c, n) p = helper(n) e = pow(c, d, p) + p return pow(pow(a, b, n), e, n) print(solve(2, 3, 2, 4, 10))
इनपुट
2, 3, 2, 4, 10
आउटपुट
6