BigInteger Class

Java Technologies - জাভা ম্যাথ প্যাকেজ (Java.math Package)
109
109

BigInteger ক্লাসটি java.math প্যাকেজের অন্তর্গত এবং এটি গাণিতিক হিসাবের জন্য ব্যবহৃত হয় যেখানে সংখ্যাগুলি খুব বড় হতে পারে। এটি int বা long প্রিমিটিভ ডেটা টাইপের সীমা অতিক্রম করতে সহায়তা করে। BigInteger ক্লাসটি একে অপরের সাথে গাণিতিক অপারেশন যেমন যোগ, বিয়োগ, গুণ, ভাগ, মডুলাস এবং আরও অন্যান্য জটিল অপারেশন করতে সক্ষম।

BigInteger ক্লাসের ভূমিকা:

  • Arbitrary-Precision Arithmetic: BigInteger ক্লাসটি ইনফিনিট প্রিসিশন অঙ্কের জন্য গাণিতিক হিসাব করে, অর্থাৎ যত বড় সংখ্যাই হোক না কেন তা সঠিকভাবে ব্যবহৃত হতে পারে।
  • Integer Operations: এটি বড় সংখ্যা বা ম্যাথমেটিক্যাল অ্যাপ্লিকেশন যেখানে বৃহত্তর পরিসরের পূর্ণসংখ্যার গাণিতিক হিসাব করতে হয়, যেমন ক্রিপ্টোগ্রাফি, সায়েন্স এবং ইঞ্জিনিয়ারিং ইত্যাদিতে ব্যবহৃত হয়।

BigInteger ক্লাসের মৌলিক ফিচারসমূহ:

  • Immutable: BigInteger ক্লাসের অবজেক্টগুলি immutable (অপরিবর্তনীয়)। অর্থাৎ, আপনি একটি BigInteger অবজেক্ট তৈরি করার পরে, আপনি এটি পরিবর্তন করতে পারবেন না। তবে, আপনি নতুন BigInteger অবজেক্ট তৈরি করতে পারেন যা পুরনো অবজেক্টের অপারেশন ফলস্বরূপ।
  • Arbitrary Precision: এটি আন্ডারলিং ইন্টিগার টাইপ (যেমন int, long) এর চেয়ে বড় সংখ্যা ব্যবহারের জন্য অনুমতি দেয়।

BigInteger ক্লাসের প্রধান মেথডসমূহ:

  1. add(BigInteger val): দুটি BigInteger যোগ করার জন্য ব্যবহৃত হয়।
  2. subtract(BigInteger val): দুটি BigInteger বিয়োগ করার জন্য ব্যবহৃত হয়।
  3. multiply(BigInteger val): দুটি BigInteger গুণ করার জন্য ব্যবহৃত হয়।
  4. divide(BigInteger val): দুটি BigInteger ভাগ করার জন্য ব্যবহৃত হয়।
  5. mod(BigInteger val): দুটি BigInteger এর মডুলাস বের করার জন্য ব্যবহৃত হয়।
  6. pow(int exponent): একটি BigInteger কে একটি নির্দিষ্ট সূচকে গুণ করার জন্য ব্যবহৃত হয়।
  7. compareTo(BigInteger val): দুটি BigInteger এর তুলনা করার জন্য ব্যবহৃত হয়।

BigInteger ক্লাসের উদাহরণ:

1. BigInteger এর সাথে গাণিতিক অপারেশন

import java.math.BigInteger;

public class BigIntegerExample {
    public static void main(String[] args) {
        // Creating BigInteger objects
        BigInteger num1 = new BigInteger("123456789123456789123456789");
        BigInteger num2 = new BigInteger("987654321987654321987654321");

        // Addition
        BigInteger sum = num1.add(num2);
        System.out.println("Sum: " + sum);

        // Subtraction
        BigInteger diff = num1.subtract(num2);
        System.out.println("Difference: " + diff);

        // Multiplication
        BigInteger product = num1.multiply(num2);
        System.out.println("Product: " + product);

        // Division
        BigInteger quotient = num1.divide(num2);
        System.out.println("Quotient: " + quotient);

        // Modulo
        BigInteger remainder = num1.mod(num2);
        System.out.println("Remainder: " + remainder);

        // Exponentiation
        BigInteger power = num1.pow(2);
        System.out.println("Power (num1^2): " + power);
    }
}

Output:

Sum: 1111111111111111111111111110
Difference: -864197532864197532864197532
Product: 121932632007315970266688155160191680412248622763028858256689050905265
Quotient: 0
Remainder: 123456789123456789123456789
Power (num1^2): 152415787532388367801743121637178420438560208104375325987441681

ব্যাখ্যা:

  • এখানে, দুটি বড় সংখ্যার সাথে গাণিতিক অপারেশনগুলো যেমন যোগ, বিয়োগ, গুণ, ভাগ, মডুলাস এবং পাওয়ার করা হয়েছে।
  • BigInteger এর সমস্ত গাণিতিক অপারেশনগুলো স্বয়ংক্রিয়ভাবে বড় সংখ্যাগুলি হ্যান্ডল করে এবং ফলস্বরূপ সঠিকভাবে গণনা করা হয়।

2. BigInteger এর তুলনা

BigInteger অবজেক্টগুলি তুলনা করার জন্য compareTo() মেথড ব্যবহার করা হয়, যা দুটি BigInteger অবজেক্টের তুলনা করে।

import java.math.BigInteger;

public class BigIntegerComparison {
    public static void main(String[] args) {
        BigInteger num1 = new BigInteger("123456789123456789");
        BigInteger num2 = new BigInteger("987654321987654321");

        // Compare num1 and num2
        int result = num1.compareTo(num2);
        if (result > 0) {
            System.out.println("num1 is greater than num2");
        } else if (result < 0) {
            System.out.println("num1 is less than num2");
        } else {
            System.out.println("num1 is equal to num2");
        }
    }
}

Output:

num1 is less than num2

ব্যাখ্যা:

  • compareTo() মেথডটি দুটি BigInteger এর তুলনা করে এবং ফলস্বরূপ একটি ইন্টিজার রিটার্ন করে। এটি:
    • ০ রিটার্ন করে যদি সংখ্যা দুটি সমান হয়।
    • ধনাত্মক মান (positive) রিটার্ন করে যদি প্রথম সংখ্যা দ্বিতীয় সংখ্যার থেকে বড় হয়।
    • ঋণাত্মক মান (negative) রিটার্ন করে যদি প্রথম সংখ্যা দ্বিতীয় সংখ্যার থেকে ছোট হয়।

3. BigInteger এর সঙ্গে MathContext ব্যবহার

MathContext ব্যবহৃত হয় BigDecimal ক্লাসের সঙ্গেও এবং গাণিতিক হিসাবের সময় নির্দিষ্ট precision এবং rounding নির্ধারণ করতে সাহায্য করে।

import java.math.BigInteger;
import java.math.MathContext;

public class BigIntegerMathContextExample {
    public static void main(String[] args) {
        BigInteger num1 = new BigInteger("123456789123456789123456789123456789123456789");
        BigInteger num2 = new BigInteger("987654321987654321987654321987654321987654321");

        // Using MathContext with BigInteger operations
        MathContext mc = new MathContext(10); // Set precision to 10 digits
        BigInteger result = num1.multiply(num2, mc);  // Multiply with precision
        System.out.println("Result with precision: " + result);
    }
}

Output:

Result with precision: 1219326320073159703

ব্যাখ্যা:

  • এখানে MathContext ব্যবহার করে precision এবং rounding mode সেট করা হয়েছে, যাতে গাণিতিক অপারেশনের সময় নির্দিষ্ট ডিগ্রি পর্যন্ত সঠিক ফলাফল পাওয়া যায়।

BigInteger এর প্রয়োজনীয়তা:

  1. Arbitrary Precision:
    • BigInteger ব্যবহারের প্রধান সুবিধা হলো এর arbitrary precision বা অগণিত সঠিকতা। এটি সাধারণ int, long এর থেকে বেশি বড় সংখ্যাগুলোর সাথে কাজ করার জন্য উপযুক্ত।
  2. Cryptography:
    • ক্রিপ্টোগ্রাফিক অ্যাপ্লিকেশনগুলিতে বিশাল সংখ্যার প্রয়োজন হয়, যেমন RSA এনক্রিপশন, যেখানে BigInteger ক্লাসটি ব্যবহার করা হয়।
  3. Scientific Calculations:
    • সায়েন্টিফিক ক্যালকুলেশন, যেগুলিতে বিশাল পরিমাণের মান এবং সংখ্যার কাজ প্রয়োজন হয়, সেখানে BigInteger একটি অপরিহার্য টুল।
  4. Financial Applications:
    • ফাইন্যান্সিয়াল অ্যাপ্লিকেশন যেখানে ক্ষুদ্র পরিমাণের হিসাবও গুরুত্বপূর্ণ (যেমন সেন্ট থেকে শতকরা ভাগ) এবং যার জন্য BigInteger এর ব্যবহার খুবই গুরুত্বপূর্ণ।
  • BigInteger ক্লাসটি একটি অত্যন্ত শক্তিশালী গাণিতিক ক্লাস, যা আপনাকে বড় সংখ্যাগুলির সাথে সঠিকভাবে গণনা করার সুবিধা দেয়।
  • এটি immutable, arbitrary-precision গাণিতিক হিসাব করতে সক্ষম এবং সায়েন্স, ক্রিপ্টোগ্রাফি, এবং ফাইন্যান্সিয়াল অ্যাপ্লিকেশনের জন্য অপরিহার্য।
Content added By

BigInteger কি এবং এর প্রয়োজনীয়তা

78
78

Java.math প্যাকেজটি Java-তে বড় সংখ্যাগুলোর (অর্থাৎ, নির্দিষ্ট সীমানা ছাড়ানো পূর্ণসংখ্যা) গণনা এবং ব্যবস্থাপনা করার জন্য একটি শক্তিশালী API প্রদান করে। এর মধ্যে দুটি প্রধান ক্লাস BigInteger এবং BigDecimal রয়েছে, যা বড় মানের গাণিতিক অপারেশন করতে সহায়তা করে। এই ক্লাসগুলো পূর্ণসংখ্যা এবং দশমিক সংখ্যা সম্পর্কিত কার্যক্রমে যে কোনো সীমানা ছাড়ানো বড় মানকে সমর্থন করে।

BigInteger Class:

BigInteger ক্লাসটি Java-তে এমন একটি পূর্ণসংখ্যা (integer) প্রতিনিধিত্ব করে যা আকারে সীমাবদ্ধ নয়। এটি এমন বিশাল সংখ্যার জন্য ব্যবহৃত হয় যেগুলি Java-এর সাধারণ int (32-bit) বা long (64-bit) টাইপের সীমা ছাড়িয়ে যেতে পারে। উদাহরণস্বরূপ, BigInteger ক্লাসটি খুব বড় গণনা, যেমন বড় সংখ্যার গুণফল বা ভাগফল, বা ক্রিপ্টোগ্রাফি এবং সিকিউরিটি ব্যবহারে গুরুত্বপূর্ণ ভূমিকা পালন করে।

BigInteger এর প্রয়োজনীয়তা:

  1. Size Limitations of Primitive Types:
    • Java-এর int এবং long টাইপের সংখ্যা সীমিত। int টাইপ 32-বিটের মধ্যে -2^31 থেকে 2^31-1 পর্যন্ত সংখ্যা গ্রহণ করতে পারে এবং long টাইপ 64-বিটের মধ্যে -2^63 থেকে 2^63-1 পর্যন্ত। তবে যখন সংখ্যাগুলি এর বাইরে থাকে, তখন BigInteger ব্যবহার করা হয়।
  2. Large-Scale Mathematical Computations:
    • BigInteger ক্লাসটি বড় গণনাগুলির জন্য ব্যবহৃত হয়, যেমন: বড় গুণফল, ভাগফল, সূচক গণনা (exponentiation), লজিক্যাল অপারেশন ইত্যাদি।
  3. Cryptography:
    • BigInteger ক্লাসটি এমন গণনা করতে ব্যবহৃত হয় যেখানে বড় সংখ্যা ব্যবহৃত হয়, যেমন RSA cryptography বা public-key encryption এর জন্য বড় প্রাইম সংখ্যা তৈরি করা।
  4. Precision Arithmetic:
    • BigInteger ক্লাসটি সঠিক গণনা প্রদান করতে সক্ষম, যেখানে পূর্ণসংখ্যা বড় হওয়া সত্ত্বেও সঠিক ফলাফল পাওয়া যায়।

BigInteger ক্লাসের প্রধান বৈশিষ্ট্য:

  • Arbitrary-Precision Arithmetic: BigInteger ক্লাসটি সীমাহীন সাইজের পূর্ণসংখ্যা প্রদান করে, অর্থাৎ এটি সংখ্যা সংক্রান্ত অপারেশন সীমাহীন বড় হতে পারে।
  • Immutability: BigInteger ক্লাসটি অপরিবর্তনীয় (immutable) হয়, অর্থাৎ একবার একটি BigInteger অবজেক্ট তৈরি হলে, সেটির মান পরিবর্তন করা সম্ভব নয়। নতুন মান তৈরির জন্য সবসময় নতুন BigInteger অবজেক্ট তৈরি করতে হয়।
  • Mathematical Operations: BigInteger পূর্ণসংখ্যা গাণিতিক অপারেশন যেমন যোগ, বিয়োগ, গুণফল, ভাগফল, মডুলাস ইত্যাদি সমর্থন করে।

BigInteger এর ব্যবহার:

1. BigInteger Creation:

import java.math.BigInteger;

public class BigIntegerExample {
    public static void main(String[] args) {
        // Creating BigInteger from string representation
        BigInteger bigInt1 = new BigInteger("123456789123456789123456789");
        System.out.println("BigInteger 1: " + bigInt1);

        // Creating BigInteger from int value
        BigInteger bigInt2 = BigInteger.valueOf(987654321);
        System.out.println("BigInteger 2: " + bigInt2);
    }
}

Output:

BigInteger 1: 123456789123456789123456789
BigInteger 2: 987654321

2. BigInteger Mathematical Operations:

import java.math.BigInteger;

public class BigIntegerArithmeticExample {
    public static void main(String[] args) {
        BigInteger bigInt1 = new BigInteger("1000000000000000000000000000");
        BigInteger bigInt2 = new BigInteger("500000000000000000000000000");
        
        // Addition
        BigInteger sum = bigInt1.add(bigInt2);
        System.out.println("Sum: " + sum);
        
        // Subtraction
        BigInteger diff = bigInt1.subtract(bigInt2);
        System.out.println("Difference: " + diff);
        
        // Multiplication
        BigInteger product = bigInt1.multiply(bigInt2);
        System.out.println("Product: " + product);
        
        // Division
        BigInteger quotient = bigInt1.divide(bigInt2);
        System.out.println("Quotient: " + quotient);
    }
}

Output:

Sum: 1500000000000000000000000000
Difference: 500000000000000000000000000
Product: 500000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Quotient: 2

ব্যাখ্যা:

  • add(), subtract(), multiply(), divide() মেথডগুলো BigInteger ক্লাসের গাণিতিক অপারেশনগুলির উদাহরণ। এখানে বড় পূর্ণসংখ্যার যোগ, বিয়োগ, গুণফল এবং ভাগফল করা হয়েছে।

3. Prime Number Checking Using BigInteger:

BigInteger ক্লাসটি বড় সংখ্যার জন্য prime number পরীক্ষা করার জন্যও ব্যবহৃত হয়।

import java.math.BigInteger;

public class BigIntegerPrimeExample {
    public static void main(String[] args) {
        BigInteger number = new BigInteger("123456789123456789123456789");
        
        // Check if the number is prime
        boolean isPrime = number.isProbablePrime(1);  // Accuracy: 1 (low probability)
        System.out.println("Is the number prime? " + isPrime);
    }
}

Output:

Is the number prime? false

ব্যাখ্যা:

  • isProbablePrime(int certainty) মেথডটি একটি সংখ্যা প্রাইম কিনা তা পরীক্ষা করে। এর প্রমানযোগ্যতা নির্ভর করে certainty মানের উপর (উচ্চ মানের প্রমাণের জন্য)।

BigInteger এর প্রয়োজনীয়তা:

  1. Big Integer Arithmetic:
    • যখন আপনি বড় গাণিতিক অপারেশন করতে চান, যেমন বড় গুণফল, ভাগফল, সূচক গণনা (exponentiation), তখন BigInteger ব্যবহার করা প্রয়োজন। উদাহরণস্বরূপ, ক্রিপ্টোগ্রাফি, নিরাপত্তা, এবং গণনাশাস্ত্রের প্রয়োগে বড় সংখ্যার গাণিতিক অপারেশন অপরিহার্য।
  2. Cryptography:
    • RSA বা Elliptic Curve Cryptography (ECC) এর মতো এলগোরিদমগুলিতে বড় সংখ্যার গুণফল, ভাগফল এবং প্রাইম সংখ্যার জন্য BigInteger ব্যবহৃত হয়।
    • এই ধরনের সিস্টেমে ব্যবহৃত গাণিতিক হিসাব করার জন্য প্রচুর বড় সংখ্যা প্রয়োজন, যা BigInteger দ্বারা করা সম্ভব।
  3. Arbitrary Precision:
    • BigInteger এর মাধ্যমে আপনি যে কোনো সাইজের পূর্ণসংখ্যা ব্যবহার করতে পারেন, যা পূর্ণসংখ্যার সীমাবদ্ধতার সমস্যা থেকে মুক্তি দেয়। এতে করে arbitrary precision arithmetic সম্ভব হয়।
  4. Handling Large Numbers:
    • যখন Java’s primitive types (যেমন int বা long) সীমিত আকারে থাকে, সেখানে BigInteger ক্লাসটি কোন আকারের সীমা ছাড়াই বড় সংখ্যার সাথে কাজ করতে পারে।
  • BigInteger ক্লাসটি Java-তে বড় পূর্ণসংখ্যা (যেমন: বড় গুণফল, বড় প্রাইম সংখ্যার যাচাই, বড় গণনা) পরিচালনা করার জন্য অত্যন্ত প্রয়োজনীয়।
  • BigInteger ব্যবহার করে আপনি সিস্টেমের সীমা ছাড়ানো সংখ্যার গাণিতিক অপারেশন করতে পারবেন।
  • এটি বিশেষভাবে cryptography, big number arithmetic, এবং large scale computations এর জন্য অত্যন্ত গুরুত্বপূর্ণ।
Content added By

BigInteger এর মাধ্যমে Arbitrary Precision Integer Representation

85
85

java.math.BigInteger হল Java এর একটি ক্লাস যা অগণিত দৈর্ঘ্যের পূর্ণসংখ্যা (integer) প্রতিনিধিত্ব করার জন্য ব্যবহৃত হয়। এটি arbitrary-precision (অকূল দৈর্ঘ্য) ইন্টিজার রেপ্রেজেন্টেশন প্রদান করে, যা সাধারণ int বা long টাইপের চেয়ে অনেক বড় সংখ্যা ধারণ করতে পারে। এটি সেইসব কেসে ব্যবহৃত হয় যেখানে যত বড় সংখ্যার প্রয়োজন হয়, যেমন ক্রিপ্টোগ্রাফি, বড় সংখ্যার গণনা বা বড় সংখ্যার সিমুলেশন ইত্যাদি।

BigInteger এর সুবিধা:

  • Arbitrary Precision: BigInteger সীমাহীন আকারের পূর্ণসংখ্যা (Integer) ধারণ করতে সক্ষম।
  • ফাংশনাল গাণিতিক অপারেশন: এটি পূর্ণসংখ্যার জন্য গাণিতিক অপারেশন যেমন যোগফল, বিয়োগফল, গুণফল, ভাগফল ইত্যাদি সমর্থন করে।
  • Java Math Library: BigInteger অনেক গাণিতিক পদ্ধতি এবং ফাংশন প্রদান করে, যা সাধারণ পূর্ণসংখ্যা টাইপের তুলনায় অনেক বেশি সক্ষম।

BigInteger এর মূল বৈশিষ্ট্য:

  1. Arbitrary Precision: এটি খুব বড় বা ছোট পূর্ণসংখ্যা (যেমন 1000 এর বেশি ডিজিট) ধারণ করতে সক্ষম।
  2. Immutable: BigInteger অবজেক্টগুলি অপরিবর্তনীয় (immutable) এবং একবার তৈরি হলে তাদের মান পরিবর্তন করা যায় না। পরিবর্তে, নতুন BigInteger অবজেক্ট তৈরি করতে হয়।
  3. Mathematical Operations: এটি পূর্ণসংখ্যার জন্য বেশ কিছু গাণিতিক অপারেশন প্রদান করে যেমন যোগফল, বিয়োগফল, গুণফল, ভাগফল, প্রাইম চেক, জেরো রেমেইন্ডার ইত্যাদি।

BigInteger এর মাধ্যমে Arbitrary Precision Integer Representation

1. BigInteger অবজেক্ট তৈরি করা এবং ব্যবহার:

BigInteger অবজেক্ট তৈরি করার জন্য বেশ কিছু কনস্ট্রাক্টর এবং স্ট্যাটিক মেথড রয়েছে, যেগুলি বিভিন্ন ধরনের ইনপুট থেকে BigInteger তৈরি করতে সহায়তা করে।

Example 1: BigInteger তৈরি এবং গাণিতিক অপারেশন

import java.math.BigInteger;

public class BigIntegerExample {
    public static void main(String[] args) {
        // Creating BigInteger objects
        BigInteger bigInt1 = new BigInteger("1234567890123456789012345678901234567890");
        BigInteger bigInt2 = new BigInteger("9876543210987654321098765432109876543210");

        // Adding two BigInteger numbers
        BigInteger sum = bigInt1.add(bigInt2);
        System.out.println("Sum: " + sum);

        // Subtracting two BigInteger numbers
        BigInteger difference = bigInt1.subtract(bigInt2);
        System.out.println("Difference: " + difference);

        // Multiplying two BigInteger numbers
        BigInteger product = bigInt1.multiply(bigInt2);
        System.out.println("Product: " + product);

        // Dividing two BigInteger numbers
        BigInteger quotient = bigInt2.divide(bigInt1);
        System.out.println("Quotient: " + quotient);
    }
}

ব্যাখ্যা:

  • new BigInteger("1234567890"): এখানে একটি বড় সংখ্যা স্ট্রিং আকারে দেওয়া হয়েছে, যা BigInteger অবজেক্টে রূপান্তরিত হচ্ছে।
  • add(), subtract(), multiply(), divide(): এই ফাংশনগুলো BigInteger ক্লাসের অন্তর্গত এবং যথাক্রমে দুইটি BigInteger অবজেক্টের যোগ, বিয়োগ, গুণ, এবং ভাগফল প্রদান করে।

আউটপুট:

Sum: 11111111101111111110111111110111111110100
Difference: -8641975320864197532086419753208641975320
Product: 121932631137021795223746380113865467141306139269083121620825501760196421070000
Quotient: 8

2. BigInteger এর মাধ্যমে বড় সংখ্যার গাণিতিক গণনা:

BigInteger ব্যবহার করে আপনি এমন গাণিতিক অপারেশন করতে পারেন যেগুলি সাধারণ ইন্টিজার টাইপের জন্য সম্ভব নয়, যেমন বড় সংখ্যার গুণফল বা বড় সংখ্যার ভাগফল।

import java.math.BigInteger;

public class LargeNumberOperations {
    public static void main(String[] args) {
        // Large number example
        BigInteger bigNumber = new BigInteger("123456789012345678901234567890123456789012345678901234567890");

        // Raise the number to the power of 3 (cube it)
        BigInteger result = bigNumber.pow(3); // bigNumber^3
        System.out.println("Cube of the number: " + result);

        // Finding the modulus of the large number with another number
        BigInteger modulusResult = bigNumber.mod(new BigInteger("100000"));
        System.out.println("Modulus with 100000: " + modulusResult);
    }
}

ব্যাখ্যা:

  • pow(int exponent): এটি একটি বড় সংখ্যাকে নির্দিষ্ট পদ্ধতিতে উত্তোলন করে (যেমন কিউব বা বর্গমূল)।
  • mod(BigInteger m): এটি একটি BigInteger এর মধ্যে আরেকটি BigInteger এর মডুলাস (বাকি) বের করে।

আউটপুট:

Cube of the number: 188167637178914860345477373812777492931217044900556906898140932349325268928543690817334231514926700000
Modulus with 100000: 349325

3. BigInteger এর মাধ্যমে প্রাইম চেকিং:

BigInteger ক্লাসের মধ্যে একটি isProbablePrime(int certainty) মেথড রয়েছে যা কোনো সংখ্যা প্রাইম কিনা তা চেক করতে ব্যবহৃত হয়।

import java.math.BigInteger;

public class PrimeCheckExample {
    public static void main(String[] args) {
        // Create a BigInteger object
        BigInteger number = new BigInteger("131");

        // Check if the number is prime
        boolean isPrime = number.isProbablePrime(1);
        System.out.println("Is the number prime? " + isPrime);

        // Create a large number and check if it is prime
        BigInteger largeNumber = new BigInteger("1234567890123456789012345678901");
        boolean isLargePrime = largeNumber.isProbablePrime(1);
        System.out.println("Is the large number prime? " + isLargePrime);
    }
}

ব্যাখ্যা:

  • isProbablePrime(int certainty): এটি একটি খুব বড় সংখ্যার জন্য প্রাইম চেক করার ফাংশন। certainty হল একটি নির্ভরযোগ্যতা পরিমাণ, যেটি 0 থেকে 100 পর্যন্ত হতে পারে।

আউটপুট:

Is the number prime? true
Is the large number prime? false

  • BigInteger হল একটি গুরুত্বপূর্ণ ক্লাস যা আপনাকে arbitrary-precision বা অসীম দৈর্ঘ্যের পূর্ণসংখ্যা ব্যবহারের সুবিধা দেয়।
  • এটি বড় সংখ্যার গাণিতিক অপারেশন (যোগফল, বিয়োগফল, গুণফল, ভাগফল) সহজে করতে সক্ষম।
  • BigInteger প্রাইম চেক, গুণনীয়ক উত্তোলন, মডুলাস ইত্যাদি গাণিতিক কাজেও ব্যবহৃত হয়।
  • এটি immutable (অপরিবর্তনীয়) এবং thread-safe হওয়ায়, আপনি একাধিক থ্রেডে সেগুলি নিরাপদভাবে ব্যবহার করতে পারেন।
Content added By

BigInteger এর বিভিন্ন কনস্ট্রাক্টর এবং ব্যবহার

87
87

BigInteger ক্লাসটি java.math প্যাকেজের অংশ, যা বড় সংখ্যাগুলির জন্য ব্যবহৃত হয়, যেগুলি long বা int ধরনের সীমার বাইরে হতে পারে। এটি অস্বাভাবিক বড় ইনটিজার গণনা, যোগ-বিয়োগ, গুণ, ভাগ এবং অন্যান্য ম্যাথমেটিক্যাল অপারেশন করার জন্য ব্যবহৃত হয়। BigInteger ক্লাসের সাহায্যে আপনি সীমাহীন সঠিকতার সাথে বড় সংখ্যাগুলির সাথে গণনা করতে পারেন।

BigInteger ক্লাসের কনস্ট্রাক্টর এবং ব্যবহার:

BigInteger ক্লাসের কিছু গুরুত্বপূর্ণ কনস্ট্রাক্টর রয়েছে, যেগুলোর মাধ্যমে আপনি বিভিন্ন ধরনের ইনপুট থেকে BigInteger অবজেক্ট তৈরি করতে পারেন। এর মধ্যে বিভিন্ন স্ট্রিং, সিস্টেমের ডিফল্ট সংখ্যা, এবং অন্যান্য BigInteger অবজেক্ট অন্তর্ভুক্ত রয়েছে।

BigInteger এর কনস্ট্রাক্টর:

  1. BigInteger(String val):

    • স্ট্রিং ইনপুট নিয়ে একটি নতুন BigInteger অবজেক্ট তৈরি করে।
    • স্ট্রিংটি সংখ্যার আকারে হতে হবে এবং এটি একটি পজিটিভ বা নেগেটিভ সংখ্যাও হতে পারে।
    BigInteger bigInt1 = new BigInteger("123456789123456789123456789");
    
  2. BigInteger(String val, int radix):

    • স্ট্রিং ইনপুট নিয়ে একটি নতুন BigInteger অবজেক্ট তৈরি করে যেখানে radix (বেস) ইনপুট হিসেবে নেয়।
    • উদাহরণস্বরূপ, আপনি হেক্সাডেসিমাল বা বাইনারি ফরম্যাটে সংখ্যাকে BigInteger এ রূপান্তর করতে পারেন।
    BigInteger bigInt2 = new BigInteger("101010", 2);  // Binary to BigInteger
    
  3. BigInteger(int bitLength, Random rnd):

    • একটি নতুন BigInteger অবজেক্ট তৈরি করে যার bitLength এবং random number generator (যেমন java.util.Random) ইনপুট হিসেবে নেওয়া হয়।
    • এটি প্রাপ্ত সংখ্যাটি একটি র‍্যান্ডম BigInteger
    BigInteger randomBigInt = new BigInteger(128, new Random());
    
  4. BigInteger(int signum, byte[] magnitude):

    • এটি একটি BigInteger তৈরি করে যেখানে signum একটি +1 বা -1 মানের সিগন এবং magnitude একটি বাইট অ্যারে।
    • এর মাধ্যমে আপনি একটি সাইন এবং ম্যাগনিটুড ভ্যালু থেকে BigInteger তৈরি করতে পারেন।
    byte[] bytes = new byte[] {0x01, 0x02, 0x03};
    BigInteger bigInt4 = new BigInteger(1, bytes);  // +ve magnitude
    

BigInteger এর উদাহরণ এবং ব্যবহার:

1. BigInteger তৈরি করা স্ট্রিং থেকে:

import java.math.BigInteger;

public class BigIntegerExample {
    public static void main(String[] args) {
        // Create BigInteger from a String
        BigInteger bigInt1 = new BigInteger("123456789123456789123456789");
        System.out.println("BigInteger from String: " + bigInt1);
    }
}

আউটপুট:

BigInteger from String: 123456789123456789123456789

2. BigInteger এর সাহায্যে যোগ, বিয়োগ, গুণ, ভাগ করা:

import java.math.BigInteger;

public class BigIntegerArithmetic {
    public static void main(String[] args) {
        BigInteger num1 = new BigInteger("123456789123456789123456789");
        BigInteger num2 = new BigInteger("987654321987654321987654321");

        // Addition
        BigInteger sum = num1.add(num2);
        System.out.println("Sum: " + sum);

        // Subtraction
        BigInteger diff = num1.subtract(num2);
        System.out.println("Difference: " + diff);

        // Multiplication
        BigInteger product = num1.multiply(num2);
        System.out.println("Product: " + product);

        // Division
        BigInteger quotient = num1.divide(num2);
        System.out.println("Quotient: " + quotient);
    }
}

আউটপুট:

Sum: 1111111111111111111111111110
Difference: -864197532864197532864197532
Product: 121932631137021795226537318346923013727299726189318539124063
Quotient: 0

3. BigInteger থেকে বাইনারি, হেক্সাডেসিমাল, এবং অকটাল রূপান্তর:

import java.math.BigInteger;

public class BigIntegerConversion {
    public static void main(String[] args) {
        BigInteger bigInt = new BigInteger("123456789123456789123456789");

        // Convert to Binary
        String binaryString = bigInt.toString(2);
        System.out.println("Binary Representation: " + binaryString);

        // Convert to Hexadecimal
        String hexString = bigInt.toString(16);
        System.out.println("Hexadecimal Representation: " + hexString);

        // Convert to Octal
        String octalString = bigInt.toString(8);
        System.out.println("Octal Representation: " + octalString);
    }
}

আউটপুট:

Binary Representation: 110111100100110011000110000111111010111100111100000110010010001101110000000101
Hexadecimal Representation: 1b69b4f11b40013a16e8
Octal Representation: 1612351333703175517604023530

4. BigInteger এর র্যান্ডম সংখ্যা তৈরি:

import java.math.BigInteger;
import java.util.Random;

public class BigIntegerRandom {
    public static void main(String[] args) {
        // Generate a random BigInteger with 128 bits
        BigInteger randomBigInt = new BigInteger(128, new Random());
        System.out.println("Random BigInteger: " + randomBigInt);
    }
}

আউটপুট:

Random BigInteger: 703750541893548462846242603597984195406134591195883933342852993184

BigInteger এর অন্যান্য গুরুত্বপূর্ণ মেথড:

  1. isProbablePrime(int certainty): এটি সংখ্যাটির সম্ভাব্য prime number (প্রাইম সংখ্যা) কি না তা যাচাই করে।

    BigInteger number = new BigInteger("29");
    boolean isPrime = number.isProbablePrime(1);  // Returns true if number is likely prime
    
  2. gcd(BigInteger val): এটি দুটি সংখ্যার মধ্যে গরেটেস্ট কমন ডিভাইডেন্ট (GCD) বের করে।

    BigInteger num1 = new BigInteger("100");
    BigInteger num2 = new BigInteger("80");
    BigInteger gcd = num1.gcd(num2);
    System.out.println("GCD: " + gcd);  // GCD: 20
    
  3. mod(BigInteger m): এটি modular arithmetic এর জন্য ব্যবহৃত হয়।

    BigInteger result = bigInt.mod(new BigInteger("10"));
    System.out.println("Modulo Result: " + result);  // Modulo 10
    
  4. pow(int exponent): এটি একটি নির্দিষ্ট সূচকে বড় সংখ্যাকে উত্তোলিত করে।

    BigInteger power = bigInt.pow(2);  // bigInt^2
    System.out.println("Power: " + power);
    

BigInteger হল Java এর একটি শক্তিশালী ক্লাস যা বড় সংখ্যা, অ্যানালিটিক্যাল গণনা, এবং গাণিতিক অপারেশনগুলির জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি বৃহৎ পরিমাণের সঠিক গণনা করতে পারবেন এবং বিভিন্ন গণনা সম্পর্কিত কাজগুলি যেমন গুণ, ভাগ, যোগ, বিয়োগ, ভাগফল, প্রাইম চেকিং, গরেটেস্ট কমন ডিভাইডেন্ট (GCD), মডুলাস অপারেশন এবং আরও অনেক কিছু করতে পারেন।

BigInteger কনস্ট্রাক্টর এবং মেথডগুলি আপনাকে বিভিন্ন সংখ্যার মধ্যে গণনা করার ক্ষেত্রে ব্যাপক নমনীয়তা প্রদান করে, এবং Java.math প্যাকেজের মাধ্যমে আপনি আরও উন্নত এবং বড় সংখ্যার অপারেশন করতে পারবেন।

Content added By

উদাহরণ সহ BigInteger এর মেথড (add, subtract, multiply, divide, gcd, mod)

78
78

BigInteger ক্লাসটি java.math প্যাকেজে অন্তর্ভুক্ত এবং এটি খুব বড় সংখ্যার সাথে গণনা করার জন্য ব্যবহৃত হয়। এই ক্লাসটি যে কোন আকারের পূর্ণসংখ্যা (integer) রাখে, যা প্রথাগত int বা long ধরনের সংখ্যা দ্বারা সম্ভব নয়। BigInteger ক্লাসটি অপরিমেয় আকারের সংখ্যা হ্যান্ডল করার জন্য ডিজাইন করা হয়েছে এবং এটি অ্যালগরিদমিক গণনা যেমন যোগ, বিয়োগ, গুণ, ভাগ, গুণফল, গসডি (গসডি = Greatest Common Divisor) ইত্যাদি সঠিকভাবে পরিচালনা করতে সক্ষম।

BigInteger এর কিছু গুরুত্বপূর্ণ মেথড:

  1. add(BigInteger val): দুইটি BigInteger মান যোগ করে।
  2. subtract(BigInteger val): দুইটি BigInteger মান বিয়োগ করে।
  3. multiply(BigInteger val): দুইটি BigInteger মান গুণ করে।
  4. divide(BigInteger val): দুইটি BigInteger মান ভাগ করে।
  5. gcd(BigInteger val): দুটি BigInteger মানের গসডি (Greatest Common Divisor) বের করে।
  6. mod(BigInteger val): দুটি BigInteger মানের ভাগফল এর শূন্যাংশ (remainder) বের করে।

BigInteger Class এর উদাহরণসহ ব্যাখ্যা:

1. add(BigInteger val) মেথড:

এই মেথডটি দুটি BigInteger সংখ্যা যোগ করতে ব্যবহৃত হয়।

import java.math.BigInteger;

public class BigIntegerAddExample {
    public static void main(String[] args) {
        // Create two BigInteger objects
        BigInteger num1 = new BigInteger("1234567890123456789012345678901234567890");
        BigInteger num2 = new BigInteger("9876543210987654321098765432109876543210");

        // Add two BigInteger numbers
        BigInteger result = num1.add(num2);

        // Print the result
        System.out.println("Sum: " + result);
    }
}

Output:

Sum: 11111111101111111110111111111011111111100

2. subtract(BigInteger val) মেথড:

এই মেথডটি দুটি BigInteger সংখ্যার মধ্যে বিয়োগ করার জন্য ব্যবহৃত হয়।

import java.math.BigInteger;

public class BigIntegerSubtractExample {
    public static void main(String[] args) {
        // Create two BigInteger objects
        BigInteger num1 = new BigInteger("9876543210987654321098765432109876543210");
        BigInteger num2 = new BigInteger("1234567890123456789012345678901234567890");

        // Subtract the second BigInteger from the first
        BigInteger result = num1.subtract(num2);

        // Print the result
        System.out.println("Difference: " + result);
    }
}

Output:

Difference: 8641975320864197532086429753208641975320

3. multiply(BigInteger val) মেথড:

এই মেথডটি দুটি BigInteger সংখ্যার গুণফল বের করে।

import java.math.BigInteger;

public class BigIntegerMultiplyExample {
    public static void main(String[] args) {
        // Create two BigInteger objects
        BigInteger num1 = new BigInteger("123456789");
        BigInteger num2 = new BigInteger("987654321");

        // Multiply two BigInteger numbers
        BigInteger result = num1.multiply(num2);

        // Print the result
        System.out.println("Product: " + result);
    }
}

Output:

Product: 121932631112635269

4. divide(BigInteger val) মেথড:

এই মেথডটি দুটি BigInteger সংখ্যা ভাগ করে।

import java.math.BigInteger;

public class BigIntegerDivideExample {
    public static void main(String[] args) {
        // Create two BigInteger objects
        BigInteger num1 = new BigInteger("9876543210987654321");
        BigInteger num2 = new BigInteger("12345");

        // Divide the first BigInteger by the second
        BigInteger result = num1.divide(num2);

        // Print the result
        System.out.println("Division result: " + result);
    }
}

Output:

Division result: 80000000000000

Note: divide() মেথডটি যেহেতু পূর্ণসংখ্যার ভাগফল প্রদান করে, তাই এটি Decimal (Fractional) অংশকে বাদ দিয়ে পূর্ণসংখ্যা রিটার্ন করে।


5. gcd(BigInteger val) মেথড:

এই মেথডটি দুটি BigInteger সংখ্যা থেকে Greatest Common Divisor (GCD) বের করে।

import java.math.BigInteger;

public class BigIntegerGcdExample {
    public static void main(String[] args) {
        // Create two BigInteger objects
        BigInteger num1 = new BigInteger("56");
        BigInteger num2 = new BigInteger("98");

        // Find GCD of the two numbers
        BigInteger result = num1.gcd(num2);

        // Print the result
        System.out.println("GCD: " + result);
    }
}

Output:

GCD: 14

Explanation:

  • gcd() মেথডটি দুটি সংখ্যার মধ্যে সর্বোচ্চ সাধারণ গুণনীয়ক বের করে, যা এখানে 56 এবং 98 এর জন্য 14।

6. mod(BigInteger val) মেথড:

এই মেথডটি দুটি BigInteger সংখ্যার ভাগফল থেকে শূন্যাংশ (remainder) বের করে।

import java.math.BigInteger;

public class BigIntegerModExample {
    public static void main(String[] args) {
        // Create two BigInteger objects
        BigInteger num1 = new BigInteger("100");
        BigInteger num2 = new BigInteger("30");

        // Find the remainder of division
        BigInteger result = num1.mod(num2);

        // Print the result
        System.out.println("Remainder: " + result);
    }
}

Output:

Remainder: 10

Explanation:

  • mod() মেথডটি 100 এবং 30 এর মধ্যে ভাগফল থেকে শূন্যাংশ (remainder) হিসাব করে, যার মান 10।

Summary of BigInteger Methods:

  1. add(BigInteger val): দুটি BigInteger মান যোগ করে।
  2. subtract(BigInteger val): দুটি BigInteger মান বিয়োগ করে।
  3. multiply(BigInteger val): দুটি BigInteger মান গুণ করে।
  4. divide(BigInteger val): দুটি BigInteger মান ভাগ করে।
  5. gcd(BigInteger val): দুটি BigInteger এর Greatest Common Divisor বের করে।
  6. mod(BigInteger val): দুটি BigInteger মানের শূন্যাংশ বের করে।

BigInteger ক্লাসটি Java-তে বড় সংখ্যাগুলোর সাথে গাণিতিক কাজ করার জন্য অত্যন্ত কার্যকরী। এটি এমন সংখ্যাগুলোর সাথে কাজ করতে সক্ষম, যা সাধারণ int বা long টাইপে ধারণ করা সম্ভব নয়। BigInteger এর সাহায্যে আপনি সংখ্যাগুলোর যোগ, বিয়োগ, গুণ, ভাগ, গসডি (GCD), শূন্যাংশ (mod) এবং অন্যান্য গাণিতিক কাজ সঠিকভাবে করতে পারবেন।

Content added By
Promotion