क्या कोई ऐसा फ़ंक्शन है जो मुझे मॉड्यूलर उलटा (मॉड एन) की गणना करने की अनुमति देगा? उदा। 1 9^-1 = 11 (मॉड 30), इस मामले में 1 9^-1 == -11 == 1 9;सी # मॉडइवर्स फ़ंक्शन
उत्तर
मॉड्यूलर अंकगणितीय का समर्थन करने के लिए सी # में कुछ भी नहीं बनाया गया है। आपको लाइब्रेरी खोजने के लिए इसे स्वयं लागू करना होगा, या बेहतर होगा।
किस प्रकार की लाइब्रेरी है? – Nook
@Nook: er ... ए सी # पुस्तकालय? –
मॉड्यूलर अंकगणितीय के लिए एक पुस्तकालय। –
BouncyCastle क्रिप्टो लाइब्रेरी में बिगइंटर क्रियान्वयन है जिसमें अधिकांश मॉड्यूलर अंकगणितीय कार्य हैं। यह Org.BouncyCastle.Math नेमस्पेस में है।
के बाद से नेट 4.0+ एक विशेष मॉड्युलर गणित के साथ BigInteger लागू करता ढंग से काम ModPow (जो पैदा करता है "X
बिजली Y
सापेक्ष Z
"), आप ModInverse अनुकरण करने के लिए एक तीसरे पक्ष के पुस्तकालय की जरूरत नहीं है। , विकिपीडिया में देखो
a_inverse = BigInteger.ModPow(a, n - 2, n)
अधिक जानकारी के लिए:: अगर n
एक प्रमुख है, तुम सब करने की जरूरत है की गणना करने के लिए है Modular multiplicative inverse, खंड Using Euler's theorem, विशेष मामला "जब मीटर एक प्रमुख है।" वैसे, इस पर एक और हालिया SO विषय है: 1/BigInteger in c#, उसी दृष्टिकोण के साथ suggested by CodesInChaos।
कृपया ध्यान दें कि यह विशेष मामला है, * जब एम एक प्राइम * है। –
int modInverse(int a, int n)
{
int i = n, v = 0, d = 1;
while (a>0) {
int t = i/a, x = a;
a = i % x;
i = x;
x = d;
d = v - t*x;
v = x;
}
v %= n;
if (v<0) v = (v+n)%n;
return v;
}
काम करने लगता है, लेकिन यह अच्छा होगा अगर यह संकेत हो सकता है (उदाहरण के लिए अपवाद फेंक कर) अगर उलटा असंभव है ('ए 'अवांछित मॉड्यूलो' एन' नहीं है) जो तब होता है जब 'ए' और' एन 'शेयर करता है गैर-तुच्छ कारक (उनकी जीसीडी एक से अधिक है)। –
BigInteger modInverse(BigInteger a, BigInteger n)
{
BigInteger i = n, v = 0, d = 1;
while (a > 0)
{
BigInteger t = i/a, x = a;
a = i % x;
i = x;
x = d;
d = v - t * x;
v = x;
}
v %= n;
if (v < 0) v = (v + n) % n;
return v;
}
बिगइंटर द्वारा प्रतिस्थापित किए गए सैमल्स के उत्तर की एक (खराब प्रारूपित) प्रति होने के लिए डाउनवॉटेड। –
- 1. सी ++ फ़ंक्शन
- 2. सी - फ़ंक्शन
- 3. सी # फ़ंक्शन
- 4. सी फ़ंक्शन
- 5. सी ++ फ़ंक्शन
- 6. सी ++ फ़ंक्शन
- 7. सी ++ कॉलबैक से सी # फ़ंक्शन
- 8. सी एपीआई फ़ंक्शन कॉलबैक सी ++ सदस्य फ़ंक्शन कोड
- 9. सी ++ स्थैतिक स्थानीय फ़ंक्शन बनाम वैश्विक फ़ंक्शन
- 10. सी ++ वर्चुअल फ़ंक्शन कार्यान्वयन?
- 11. सी फ़ंक्शन जो फ़ाइल
- 12. सी प्रोग्राम फ़ंक्शन
- 13. सी प्रोटोटाइप फ़ंक्शन
- 14. सी # जेनरिक फ़ंक्शन
- 15. सी फ़ंक्शन घोषणा
- 16. सी ++ टेम्पलेट फ़ंक्शन पैरामीटर
- 17. सी # परिवर्तनीय = नया फ़ंक्शन() {};
- 18. तर्कों को सी फ़ंक्शन
- 19. सी ++ पूर्णांक फर्श फ़ंक्शन
- 20. एक सी कॉलबैक फ़ंक्शन
- 21. सी फ़ंक्शन पॉइंटर अनुवाद?
- 22. फ़ंक्शन जो सी #
- 23. सी रीडलाइन फ़ंक्शन
- 24. लपेटना सी ++ टेम्पलेट फ़ंक्शन
- 25. सी # फ़ंक्शन पॉइंटर?
- 26. सी फ़ंक्शन पॉइंटर्स
- 27. कमजोर लिंकिंग सी फ़ंक्शन
- 28. सी ++ फ़ंक्शन पॉइंटर पैरामीटर
- 29. सी पुस्तकालयों से कॉलिंग सी ++ फ़ंक्शन पॉइंटर्स
- 30. सी ++/सी फ़ंक्शन पॉइंटर्स जो शून्य *
ध्यान दें कि आप मनमाने ढंग से गुणा पलट सकता है। उदाहरण के लिए 2 में गुणात्मक उलटा मॉड्यूलो 30 है क्योंकि जीसीडी (2,30)! = 1 – CodesInChaos