প্রাইম নাম্বার কী?
প্রাইম নাম্বার হলো এমন একটি প্রাকৃতিক সংখ্যা যা ১-এর চেয়ে বড় এবং যার শুধুমাত্র দুটি ভাজক থাকে: ১ এবং নিজে। অর্থাৎ, এটি অন্য কোনো সংখ্যা দিয়ে ভাগ হয় না।
প্রাইম নাম্বারের উদাহরণ: ২, ৩, ৫, ৭, ১১, ১৩, ১৭, ১৯, ২৩, ২৯, ৩১, ৩৭, ৪১, ৪৩, ৪৭...
বিশেষ দ্রষ্টব্য:
- ২ হলো একমাত্র জোড় প্রাইম নাম্বার
- ১ প্রাইম নাম্বার নয় (একটি ভাজক থাকে)
- সব짝 সংখ্যা (২ বাদে) প্রাইম নয় কারণ সেগুলো ২ দিয়ে ভাগ হয়
ইনপুট ও আউটপুট উদাহরণ
ইনপুট:
Enter the number : 47
আউটপুট:
The number 47 is a prime number.
অ্যালগরিদম
- প্রোগ্রাম শুরু করুন
- একটি ইন্টিজার ভেরিয়েবল ঘোষণা করুন: my_input
- ব্যবহারকারী থেকে সংখ্যা ইনপুট নিন
- একটি বুলিয়ান ফ্ল্যাগ isprime = false সেট করুন
- ফর লুপ চালান ২ থেকে my_input/2 পর্যন্ত
- যদি my_input % i == 0 হয়, তবে isprime = true করে ব্রেক করুন
- লুপ শেষে যদি isprime == false হয়, তবে প্রাইম নাম্বার
- ফলাফল প্রদর্শন করুন
- প্রোগ্রাম শেষ করুন
উদাহরণ ১: ব্যবহারকারী ইনপুট নেওয়া
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 এনক্রিপশন)
- হ্যাশ টেবিল সাইজ নির্ণয়
- র্যান্ডম নম্বর জেনারেশন
- কম্পিউটার সায়েন্সের বিভিন্ন অ্যালগরিদম