কম্পিউটার টিউটোরিয়াল

জাভা প্রোগ্রাম: প্রাইম নাম্বার চেক করা

প্রাইম নাম্বার কী?

প্রাইম নাম্বার হলো এমন একটি প্রাকৃতিক সংখ্যা যা ১-এর চেয়ে বড় এবং যার শুধুমাত্র দুটি ভাজক থাকে: ১ এবং নিজে। অর্থাৎ, এটি অন্য কোনো সংখ্যা দিয়ে ভাগ হয় না।

প্রাইম নাম্বারের উদাহরণ: ২, ৩, ৫, ৭, ১১, ১৩, ১৭, ১৯, ২৩, ২৯, ৩১, ৩৭, ৪১, ৪৩, ৪৭...

বিশেষ দ্রষ্টব্য:

  • ২ হলো একমাত্র জোড় প্রাইম নাম্বার
  • ১ প্রাইম নাম্বার নয় (একটি ভাজক থাকে)
  • সব짝 সংখ্যা (২ বাদে) প্রাইম নয় কারণ সেগুলো ২ দিয়ে ভাগ হয়

ইনপুট ও আউটপুট উদাহরণ

ইনপুট:

Enter the number : 47

আউটপুট:

The number 47 is a prime number.

অ্যালগরিদম

  1. প্রোগ্রাম শুরু করুন
  2. একটি ইন্টিজার ভেরিয়েবল ঘোষণা করুন: my_input
  3. ব্যবহারকারী থেকে সংখ্যা ইনপুট নিন
  4. একটি বুলিয়ান ফ্ল্যাগ isprime = false সেট করুন
  5. ফর লুপ চালান ২ থেকে my_input/2 পর্যন্ত
  6. যদি my_input % i == 0 হয়, তবে isprime = true করে ব্রেক করুন
  7. লুপ শেষে যদি isprime == false হয়, তবে প্রাইম নাম্বার
  8. ফলাফল প্রদর্শন করুন
  9. প্রোগ্রাম শেষ করুন

উদাহরণ ১: ব্যবহারকারী ইনপুট নেওয়া

import java.util.Scanner;

public class IsPrime {
    public static void main(String[] args) {
        int my_input;
        System.out.println("Required packages have been imported");
        Scanner my_scanner = new Scanner(System.in);
        System.out.println("A reader object has been defined");
        System.out.print("Enter the number : ");
        my_input = my_scanner.nextInt();
        
        boolean isprime = false;
        for (int i = 2; i <= my_input / 2; ++i) {
            if (my_input % i == 0) {
                isprime = true;
                break;
            }
        }
        
        if (!isprime)
            System.out.println("The number " + my_input + " is a prime number.");
        else
            System.out.println("The number " + my_input + " is not a prime number.");
    }
}

উদাহরণ ২: পূর্বনির্ধারিত মান ব্যবহার

public class IsPrime {
    public static void main(String[] args) {
        int my_input = 47;
        System.out.println("The number is defined as " + my_input);
        
        boolean isprime = false;
        for (int i = 2; i <= my_input / 2; ++i) {
            if (my_input % i == 0) {
                isprime = true;
                break;
            }
        }
        
        if (!isprime)
            System.out.println("The number " + my_input + " is a prime number.");
        else
            System.out.println("The number " + my_input + " is not a prime number.");
    }
}

কোড ব্যাখ্যা

  • লুপ সীমা: i <= my_input/2 - কোনো সংখ্যার ভাজক তার অর্ধেকের চেয়ে বড় হতে পারে না
  • ব্রেক স্টেটমেন্ট: প্রথম ভাজক পাওয়ায় লুপ থেকে বের হয়ে যায় (অপ্টিমাইজেশন)
  • বুলিয়ান ফ্ল্যাগ: isprime = true মানে ভাজক পাওয়া গেছে (প্রাইম নয়)
  • সময় জটিলতা: O(n/2) ≈ O(n)

উন্নত অ্যালগরিদম: O(√n) কমপ্লেক্সিটি

বড় সংখ্যার জন্য sqrt(n) পর্যন্ত চেক করলেই যথেষ্ট:

boolean isPrime = true;
if (my_input <= 1) isPrime = false;
else if (my_input == 2) isPrime = true;
else if (my_input % 2 == 0) isPrime = false;
else {
    for (int i = 3; i * i <= my_input; i += 2) {
        if (my_input % i == 0) {
            isPrime = false;
            break;
        }
    }
}

প্রাইম নাম্বারের প্রয়োগ

  • ক্রিপ্টোগ্রাফি (RSA এনক্রিপশন)
  • হ্যাশ টেবিল সাইজ নির্ণয়
  • র‍্যান্ডম নম্বর জেনারেশন
  • কম্পিউটার সায়েন্সের বিভিন্ন অ্যালগরিদম
  1. পাইথনে একটি সংখ্যা ডাইহেড্রাল প্রাইম (Dihedral Prime) কিনা যাচাই করা

  2. পাইথনে একটি সংখ্যার সব রোটেশন প্রাইম কিনা যাচাই করার প্রোগ্রাম

  3. প্রাইম নম্বর চেক করার পাইথন প্রোগ্রাম

  4. পাইথন প্রোগ্রাম: কোনো সংখ্যা প্রাইম কিনা তা যাচাই করা