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

জাভা প্রোগ্রাম: দুটি ইন্টারভালের মধ্যে প্রাইম নাম্বার বের করা (ইনলাইন)

দুটি ইন্টারভালের মধ্যে প্রাইম নাম্বার (ইনলাইন মেথড)

এই ভার্শনে IsPrime() ফাংশন আলাদা না করে সরাসরি মেইন মেথডে নেস্টেড লুপ দিয়ে প্রাইম চেক করা হয়েছে।

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

ইনপুট:

Starting number : 1
Ending number : 75

আউটপুট:

The prime numbers between the interval 1 and 75 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73

অ্যালগরিদম

  1. প্রোগ্রাম শুরু করুন
  2. ভেরিয়েবল ঘোষণা: my_high, my_low, i, my_temp (boolean)
  3. ব্যবহারকারী থেকে ইনপুট নিন
  4. হোয়াইল লুপ: my_low < my_high পর্যন্ত
  5. প্রতিটি my_low এর জন্য: my_temp = false
  6. ফর লুপ: i = 2 থেকে my_low/2 পর্যন্ত
  7. যদি my_low % i == 0 হয়, my_temp = true, break
  8. যদি !my_temp এবং my_low != 0 && my_low != 1 হয়, প্রিন্ট করুন
  9. my_low++
  10. প্রোগ্রাম শেষ করুন

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

import java.util.Scanner;

public class PrimeNumber {
    public static void main(String[] args) {
        int my_high, my_low, i;
        boolean my_temp;
        
        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 starting number : ");
        my_low = my_scanner.nextInt();
        System.out.print("Enter an ending Number: ");
        my_high = my_scanner.nextInt();
        
        System.out.println("The prime numbers between the interval " + my_low + " and " + my_high + " are:");
        while (my_low < my_high) {
            my_temp = false;
            for (i = 2; i <= my_low / 2; ++i) {
                if (my_low % i == 0) {
                    my_temp = true;
                    break;
                }
            }
            if (!my_temp && my_low != 0 && my_low != 1)
                System.out.print(my_low + " ");
            ++my_low;
        }
    }
}

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

public class PrimeNumber {
    public static void main(String[] args) {
        int my_high = 75, my_low = 1, i;
        boolean my_temp;
        System.out.println("The starting and ending numbers are defined as " + my_low + " and " + my_high);
        System.out.println("The prime numbers between the interval " + my_low + " and " + my_high + " are:");
        
        while (my_low < my_high) {
            my_temp = false;
            for (i = 2; i <= my_low / 2; ++i) {
                if (my_low % i == 0) {
                    my_temp = true;
                    break;
                }
            }
            if (!my_temp && my_low != 0 && my_low != 1)
                System.out.print(my_low + " ");
            ++my_low;
        }
    }
}

পূর্বের আর্টিকেল (ID: 1006093130) থেকে পার্থক্য

উন্নত ইনলাইন ভার্শন (O(√n) অপ্টিমাইজেশন)

public class PrimeNumberOptimized {
    public static void main(String[] args) {
        int low = 1, high = 75;
        System.out.println("Primes between " + low + " and " + high + ":");
        
        for (int n = Math.max(2, low); n <= high; n++) {
            boolean isPrime = true;
            
            // O(√n) চেক
            if (n % 2 == 0) {
                isPrime = (n == 2);
            } else {
                for (int i = 3; i * i <= n; i += 2) {
                    if (n % i == 0) {
                        isPrime = false;
                        break;
                    }
                }
            }
            
            if (isPrime) System.out.print(n + " ");
        }
    }
}

সেরা অনুশীলন: ফাংশন এক্সট্রাক্ট করুন

public class PrimeRange {
    // আলাদা ফাংশন - টেস্টেবল, রিইউজেবল
    public static boolean isPrime(int n) {
        if (n <= 1) return false;
        if (n <= 3) return true;
        if (n % 2 == 0 || n % 3 == 0) return false;
        for (int i = 5; i * i <= n; i += 6)
            if (n % i == 0 || n % (i + 2) == 0) return false;
        return true;
    }
    
    public static void printPrimesInRange(int low, int high) {
        for (int i = Math.max(2, low); i <= high; i++)
            if (isPrime(i)) System.out.print(i + " ");
        System.out.println();
    }
    
    public static void main(String[] args) {
        printPrimesInRange(1, 75);
    }
}

Sieve of Eratosthenes (রেঞ্জে প্রাইমের জন্য সেরা)

public static void sieveRange(int low, int high) {
    boolean[] isPrime = new boolean[high + 1];
    Arrays.fill(isPrime, true);
    isPrime[0] = isPrime[1] = false;
    
    for (int i = 2; i * i <= high; i++)
        if (isPrime[i])
            for (int j = i * i; j <= high; j += i)
                isPrime[j] = false;
    
    for (int i = Math.max(2, low); i <= high; i++)
        if (isPrime[i]) System.out.print(i + " ");
}

কনকারেন্ট প্রসেসিং (বড় রেঞ্জের জন্য)

// ForkJoinPool ব্যবহার করে প্যারালেল সিভ
ForkJoinPool pool = new ForkJoinPool();
pool.submit(() -> parallelSieve(low, high)).join();

সাধারণ ভুল

  • ইনলাইন কোডে ডুপ্লিকেশন - বাগ ফিক্স করতে সব জায়গায় পরিবর্তন লাগে
  • i <= my_low/2 এর বদলে i*i <= my_low ব্যবহার করুন (দ্রুত)
  • ১ কে প্রাইম বলা বাগ (আর্টিকেল ১৩০-এ আছে, ১৩২-এ ফিক্সড)
  • even সংখ্যা স্পেশাল হ্যান্ডল ছাড়া চেক করা (স্লো)
  1. ফর লুপ ব্যবহার করে ১ থেকে N পর্যন্ত প্রাইম নম্বর প্রিন্ট করার সি প্রোগ্রাম

  2. জাভা প্রোগ্রাম: দুটি নম্বর সওয়াপ (Swap) করা

  3. জাভা প্রোগ্রাম: দুটি নম্বর যোগ করা

  4. দুটি সংখ্যার সাধারণ ভাজক বের করার জাভা প্রোগ্রাম

কপিরাইট © https://bd.wsxdn.com সমস্ত অধিকার সংরক্ষিত
দিকআর্টিকেল ১৩০ (Function-based)আর্টিকেল ১৩২ (Inline)
IsPrime ফাংশনআলাদা স্ট্যাটিক মেথডইনলাইন নেস্টেড লুপ
১ হ্যান্ডলিংবাগ: ১ কে প্রাইম বলেসঠিক: my_low != 1 চেক
কোড রিইউজসহজকঠিন
পাঠযোগ্যতাউচ্চনিম্ন