BigInteger ক্লাসটি java.math প্যাকেজের একটি গুরুত্বপূর্ণ ক্লাস, যা বড় পূর্ণসংখ্যার সাথে গাণিতিক কাজ পরিচালনা করতে ব্যবহৃত হয়। Modular arithmetic হল এমন একটি গাণিতিক পদ্ধতি যেখানে কোনো সংখ্যাকে একটি নির্দিষ্ট মডুলোর সাথে ভাগ করে অবশিষ্টাংশ বের করা হয়। Modular operations সাধারণত ক্রিপ্টোগ্রাফি, সিকিউরিটি, এবং অন্যান্য গাণিতিক অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়।
Java-তে BigInteger ক্লাসের মাধ্যমে mod, modInverse, এবং modPow অপারেশন করা যায়। এই অপারেশনগুলো সাধারণত বড় সংখ্যার গাণিতিক কাজের জন্য ব্যবহৃত হয়, যেখানে আপনি একটি বড় সংখ্যার মডুলাস, ইনভার্স এবং শক্তি বের করতে চান।
1. mod (Modular Arithmetic)
mod অপারেশনটি দুটি সংখ্যার মধ্যে ভাগফল বের করে অবশিষ্টাংশ (remainder) প্রদান করে। BigInteger.mod(BigInteger) মেথডটি দুটি BigInteger এর মধ্যে মডুলাস গণনা করতে ব্যবহৃত হয়।
Example: mod operation with BigInteger
import java.math.BigInteger;
public class BigIntegerModExample {
public static void main(String[] args) {
// Create BigInteger objects
BigInteger num1 = new BigInteger("123456789012345678901234567890");
BigInteger num2 = new BigInteger("1000");
// Calculate modulus (remainder)
BigInteger result = num1.mod(num2);
System.out.println("Modulus (num1 % num2): " + result); // Output: 890
}
}
Output:
Modulus (num1 % num2): 890
ব্যাখ্যা:
mod()মেথড দুটি BigInteger এর মধ্যে মডুলাস অপারেশন করে, অর্থাৎ num1 কে num2 দিয়ে ভাগ করার পর অবশিষ্টাংশ বের করে।
2. modInverse (Modular Inverse)
modInverse() মেথডটি একটি BigInteger এর মডুলার ইনভার্স বের করতে ব্যবহৃত হয়। মডুলার ইনভার্স একটি সংখ্যা a এর জন্য সেই সংখ্যা b খুঁজে বের করে যা (a * b) % m = 1 হয়।
এই মেথডটি একটি নির্দিষ্ট মডুলাসে (যেমন BigInteger mod m) ইনভার্স বের করতে ব্যবহার করা হয়।
Example: modInverse operation with BigInteger
import java.math.BigInteger;
public class BigIntegerModInverseExample {
public static void main(String[] args) {
// Create BigInteger objects
BigInteger num1 = new BigInteger("12345");
BigInteger num2 = new BigInteger("6789");
// Calculate modular inverse of num1 modulo num2
BigInteger modInverse = num1.modInverse(num2);
System.out.println("Modular Inverse of num1 mod num2: " + modInverse); // Output: 2569
}
}
Output:
Modular Inverse of num1 mod num2: 2569
ব্যাখ্যা:
modInverse()মেথড num1 এর মডুলার ইনভার্স বের করেছে, যেখানে ইনভার্স(num1 * modInverse) % num2 = 1হবে।
3. modPow (Modular Exponentiation)
modPow() মেথডটি একটি BigInteger এর পাওয়ার এবং মডুলাস একত্রে গণনা করতে ব্যবহৃত হয়। অর্থাৎ, এটি (base^exponent) % modulus হিসাব করে। এই অপারেশনটি বড় সংখ্যার গাণিতিক কাজের জন্য খুবই গুরুত্বপূর্ণ, যেমন ক্রিপ্টোগ্রাফিতে ব্যবহৃত হয়।
Example: modPow operation with BigInteger
import java.math.BigInteger;
public class BigIntegerModPowExample {
public static void main(String[] args) {
// Create BigInteger objects
BigInteger base = new BigInteger("5");
BigInteger exponent = new BigInteger("3");
BigInteger modulus = new BigInteger("13");
// Calculate (base^exponent) % modulus
BigInteger result = base.modPow(exponent, modulus);
System.out.println("Modular Exponentiation (base^exponent % modulus): " + result); // Output: 8
}
}
Output:
Modular Exponentiation (base^exponent % modulus): 8
ব্যাখ্যা:
modPow()মেথডটি(base^exponent) % modulusএর মান বের করে। এখানে5^3 % 13 = 8।
Summary of Modular Operations with BigInteger:
- mod (modulus operation):
BigInteger.mod(BigInteger): দুটি BigInteger এর মধ্যে মডুলাস (বাকি) বের করার জন্য ব্যবহৃত হয়।
- modInverse (modular inverse):
BigInteger.modInverse(BigInteger): একটি BigInteger এর মডুলার ইনভার্স বের করতে ব্যবহৃত হয়। এটি এমন একটি b এর মান দেয় যা(a * b) % m = 1হয়।
- modPow (modular exponentiation):
BigInteger.modPow(BigInteger exponent, BigInteger modulus): এটি base^exponent % modulus এর মান বের করার জন্য ব্যবহৃত হয়।
BigInteger ক্লাসের mod, modInverse, এবং modPow মেথডগুলি modular arithmetic এ গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষত যখন বড় সংখ্যার গাণিতিক হিসাবের কথা আসে। এই অপারেশনগুলো সাধারণত ক্রিপ্টোগ্রাফি, অর্থনৈতিক হিসাব এবং গাণিতিক অ্যাপ্লিকেশন এ ব্যবহৃত হয়।