গণিতে, একটি মডুলার ইকুয়েশন হলো একটি এলজেব্রায়িক ইকুয়েশন যা মডুলাই দ্বারা স্যাটিসফাইড হয়, মডুলি প্রোবলেমের সেন্সে। অর্থাৎ, একটি মডুলি স্পেসে কিছু ফাংশন দেওয়া থাকলে, একটি মডুলার ইকুয়েশন হলো তাদের মধ্যে একটি সমীকরণ, বা অন্য কথায় মডুলির জন্য একটি আইডেন্টিটি।
মডুলার ইকুয়েশন শব্দটির সবচেয়ে বেশি ব্যবহার এলিপ্টিক কার্ভের মডুলি প্রোবলেমের সাথে সম্পর্কে। সেক্ষেত্রে, মডুলি স্পেস নিজে এক-আয়ামী। এর মানে যেকোনো দুটি র্যাশনাল ফাংশন 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”। উপরের ইকুয়েশনে, ২১ এবং ৫ একুইভ্যালেন্ট। এর কারণ ২১ মডুলো ৪ = ১ যা ৫ মডুলো ৪ = ১-এর সমান। আরেকটা উদাহরণ 51 ≡ 16( mod 7)
এই সমস্যায়, আমাদের দুটি ইন্টিজার a এবং b দেওয়া আছে এবং আমাদের X-এর সম্ভাব্য মানগুলো বের করতে হবে যেগুলো মডুলার ইকুয়েশন (A mod X)=B মেনে চলে যেখানে X মডুলার ইকুয়েশনের সমাধান।
উদাহরণস্বরূপ
Input: A = 26, B = 2 Output: X can take 6 values
ব্যাখ্যা
X হতে পারে {3, 4, 6, 8, 12, 24} যেকোনো একটি কারণ A মডুলাস এই যেকোনো ভ্যালুর সমান ২ অর্থাৎ (26 mod 3) = (26 mod 4) = (26 mod 6) = (26 mod 8) = .... = 2
আমাদের ইকুয়েশন: A mod X = B
শর্তগুলো:
if (A = B) তাহলে ইনফিনিট মান থাকবে যেখানে A সবসময় X-র চেয়ে বড়।
if (A < B) তাহলে X মডুলার ইকুয়েশন ধারণ করতে পারবে না।
এখন শুধু শেষ কেস বাকি (A > B)।
এই কেসে আমরা রিলেশন ব্যবহার করব:
Dividend = Divisor * Quotient + Remainder
X অর্থাৎ Divisor, দেওয়া A অর্থাৎ Dividend এবং B অর্থাৎ Remainder।
এখন
A = X * Quotient + B
Quotient কে Y হিসেবে রিপ্রেজেন্ট করি
∴ A = X * Y + B
A - B = X * Y
∴ Y-এর ইন্টিজার ভ্যালু পেতে,
আমাদের সব X নিতে হবে যাতে X, (A - B)-কে ভাগ করে।
∴ X হলো (A - B)-এর একটি ডিভাইজর
(A – B)-এর ডিভাইজরগুলো বের করা হচ্ছে মূল সমস্যা এবং এমন ডিভাইজরের সংখ্যাতাই X-এর সম্ভাব্য মান।
আমরা জানি A mod X সমাধানের ভ্যালু হবে (0 to X – 1) তাই সব এমন X নিতে হবে যাতে X > B।
এভাবে আমরা বলতে পারি (A - B)-এর ডিভাইজর সংখ্যা যেগুলো B-র চেয়ে বড়, সেগুলোই 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 can take Infinitely many values greater than " << A << "\n"; } else { cout << " X can take " << Sol << " values\n"; return 0; } }