Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

मॉड्यूलर समीकरणों के हल की संख्या के लिए C/C++ प्रोग्राम?


गणित में, एक मॉड्यूलर समीकरण (modular equation) मोडुली (moduli) द्वारा संतुष्ट एक बीजीय समीकरण है, मोडुली समस्या के अर्थ में। यानी, मोडुली स्पेस पर फ़ंक्शंस की एक संख्या दी गई है, एक मॉड्यूलर समीकरण उनके बीच मान्य एक समीकरण है, या दूसरे शब्दों में मोडुली के लिए एक पहचान।

शब्द मॉड्यूलर समीकरण का सबसे अधिक उपयोग अण्डाकार वक्र (elliptic curves) के लिए मोडुली समस्याओं के संबंध में होता है। उस स्थिति में, मोडुली स्पेस स्वयं एक आयाम का होता है। इसका तात्पर्य है कि मोडुलर वक्र के फ़ंक्शन फील्ड में कोई भी दो परिमेय फ़ंक्शंस F और G, एक मॉड्यूलर समीकरण P(F, G) = 0 को संतुष्ट करेंगे जहां P दो चरों का एक गैर-शून्य बहुपद है सम्मिश्र संख्याओं पर। F और G के उपयुक्त गैर-डिजेनरेट चयन के लिए, समीकरण P(X,Y) = 0 वास्तव में मॉड्यूलर वक्र को परिभाषित करेगा।

आपने अभी एक अजीब प्रकार का गणितीय व्यंजक देखा है जिसका रूप है

B ≡ (A mod X)

यह कहता है कि B, A के मोडुलो X के अनुरूप है। आइए एक उदाहरण लें,

21 ≡ 5 (mod 4)

एक प्रतीक equiv का अर्थ "समतुल्यता (Equivalence)" है। उपरोक्त समीकरण में, 21 और 5 समतुल्य हैं। ऐसा इसलिए है क्योंकि 21 मोडुलो 4 = 1, 5 मोडुलो 4 = 1 के बराबर है। एक और उदाहरण है 51 ≡ 16 (mod 7)

इस समस्या में, हमारे पास दो पूर्णांक a और b हैं और हमें उन संभावित मानों x की संख्या ढूंढनी है जो मॉड्यूलर समीकरण (A mod X) = B का पालन करते हैं जहां X मॉड्यूलर समीकरण का हल है।

उदाहरण के लिए

Input: A = 26, B = 2 Output: X 6 मान ले सकता है

व्याख्या

X {3, 4, 6, 8, 12, 24} में से किसी के बराबर हो सकता है क्योंकि इनमें से किसी भी मान से A का मोडुलो 2 के बराबर होता है यानी (26 mod 3) = (26 mod 4) = (26 mod 6) = (26 mod 8) = .... = 2

हमारे पास समीकरण है A mod X = B

शर्तें

यदि (A = B) तो अनंत मान होंगे जहां A हमेशा X से बड़ा होगा।

यदि (A < B) तो X के लिए मॉड्यूलर समीकरण को मानना संभव नहीं है।

अब केवल अंतिम मामला बचा है कि (A > B)।

अब, इस मामले में, हम संबंध का उपयोग करेंगे

लाभांश (Dividend) = भाजक (Divisor) * भागफल (Quotient) + शेषफल (Remainder)

X यानी भाजक दिए गए A यानी लाभांश और B यानी शेषफल।

अब

A = X * भागफल + B

भागफल को Y से दर्शाएं

∴ A = X * Y + B

A - B = X * Y


∴ Y के पूर्णांक मान प्राप्त करने के लिए,

हमें उन सभी X को लेने की आवश्यकता है जैसे कि X, (A - B) को विभाजित करता है।


∴ X, (A - B) का एक भाजक है

(A - B) के भाजकों को ढूंढना मुख्य समस्या है और ऐसे भाजकों की संख्या X के संभावित मान हैं जो ले सकते हैं।

हम जानते हैं कि A mod X के हल मान (0 से X - 1) तक होंगे, उन सभी X को लें जैसे कि X > B।

इस तरह हम यह निष्कर्ष निकाल सकते हैं कि (A - B) के भाजकों की संख्या जो B से बड़ी हैं, X के सभी संभावित मान हैं जो A mod X = B को संतुष्ट कर सकते हैं।

उदाहरण

#include <iostream>
#include <math.h>
using namespace std;
int Divisors(int A, int B) {
    int N = (A - B);
    int D = 0;
    for (int i = 1; i <= sqrt(N); i++) {
        if ((N % i) == 0) {
            if (i > B)
                D++;
            if ((N / i) != i && (N / i) > B)
                D++;
        }
    }
    return D;
}
int PossibleWaysUtil(int A, int B) {
    if (A == B)
        return -1;
    if (A < B)
        return 0;
    int D = 0;
    D = Divisors(A, B);
    return D;
}
int main() {
    int A = 26, B = 2;
    int Sol = PossibleWaysUtil(A, B);
    if (Sol == -1) {
        cout << "X अनंत मान ले सकता है जो " << A << " से बड़े हैं\n";
    } else {
        cout << "X " << Sol << " मान ले सकता है\n";
        return 0;
    }
}

  1. nवीं कैटलन संख्या (nth Catalan Number) के लिए C/C++ प्रोग्राम? nवीं कैटलन संख्या (nth Catalan Number) के लिए C/C++ प्रोग्राम?

    कैटलन संख्याएं (Catalan numbers) संख्याओं का एक अनुक्रम है। कैटलन संख्याएं प्राकृतिक संख्याओं का एक अनुक्रम बनाती हैं जो विभिन्न गणना समस्याओं में होती हैं, अक्सर पुनरावर्ती रूप से परिभाषित वस्तुओं से जुड़ी होती हैं। Cₙ लंबाई 2n के डाइक शब्दों (Dyck words) की संख्या है। एक डाइक शब्द n Xs और n Ys

  1. C/C++ प्रोग्राम: परवलय का शीर्ष, फोकस और नियता ढूंढना C/C++ प्रोग्राम: परवलय का शीर्ष, फोकस और नियता ढूंढना

    यहां हम देखेंगे कि C या C++ प्रोग्राम का उपयोग करके परवलय का शीर्ष, फोकस और नियता कैसे ढूंढें। इन पैरामीटर्स को प्राप्त करने के लिए हमें परवलय का सामान्य समीकरण चाहिए। सामान्य सूत्र है - y = a*x^2 + b*x + c a, b और c के मान दिए गए हैं। शीर्ष के लिए सूत्र - फोकस के लिए सूत्र - नियता के लिए सूत्र

  1. C/C++ प्रोग्राम: त्रिकोणीय माचिस संख्या C/C++ प्रोग्राम: त्रिकोणीय माचिस संख्या

    यहां हम देखेंगे कि नीचे दिखाए अनुसार पिरामिड बनाने के लिए कितनी माचिस की तीलियों की आवश्यकता है। पिरामिड का आधार दिया गया है। तो यदि आधार 1 है, तो पिरामिड बनाने के लिए 3 माचिस की तीलियों की आवश्यकता होगी, आधार 2 के लिए, 9 माचिस की तीलियों की आवश्यकता होगी, आधार आकार 3 के लिए, 18 माचिस की तीलियों की