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

জাভা প্রোগ্রাম: একটি সংখ্যার ফ্যাক্টর (Factors) ডিসপ্লে করা

ফ্যাক্টর (Factor) কী?

ফ্যাক্টর হলো এমন সংখ্যাগুলো যা অন্য একটি সংখ্যাকে সম্পূর্ণরূপে ভাগ করে দেয় (বাকি ০ থাকে)। যদি a × b = c হয়, তবে a এবং b হলো c-এর ফ্যাক্টর।

উদাহরণ: ১২-এর ফ্যাক্টর: ১, ২, ৩, ৪, ৬, ১২

গুণনफल: ১×১২=১২, ২×৬=১২, ৩×৪=১২

গুণাবলী

  • ১ সব সংখ্যার ফ্যাক্টর
  • প্রতিটি সংখ্যা নিজের ফ্যাক্টর
  • ফ্যাক্টর সবসময় সংখ্যাটির চেয়ে ছোট বা সমান
  • ফ্যাক্টরগুলো জোড়ায় আসে (a, b) যেখানে a × b = n

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

ইনপুট:

Input : 45

আউটপুট:

The factors of 45 are: 1 3 5 9 15 45

অ্যালগরিদম

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

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

import java.util.Scanner;

public class Factors {
    public static void main(String[] args) {
        int my_input, i;
        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();
        
        System.out.print("The factors of " + my_input + " are: ");
        for (i = 1; i <= my_input; ++i) {
            if (my_input % i == 0) {
                System.out.print(i + " ");
            }
        }
    }
}

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

import java.util.Scanner;

public class Factors {
    public static void main(String[] args) {
        int my_input = 45, i;
        System.out.println("The number is defined as " + my_input);
        System.out.print("The factors of " + my_input + " are: ");
        for (i = 1; i <= my_input; ++i) {
            if (my_input % i == 0) {
                System.out.print(i + " ");
            }
        }
    }
}

অপ্টিমাইজড ভার্শন: O(√n) কমপ্লেক্সিটি

ফ্যাক্টরগুলো জোড়ায় আসে। sqrt(n) পর্যন্ত চেক করলেই যথেষ্ট।

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class FactorsOptimized {
    public static void main(String[] args) {
        int n = 45;
        List factors = new ArrayList<>();
        
        for (int i = 1; i * i <= n; i++) {
            if (n % i == 0) {
                factors.add(i);
                if (i != n / i) { // পারফেক্ট স্কোয়ার না হলে
                    factors.add(n / i);
                }
            }
        }
        
        Collections.sort(factors);
        System.out.println("The factors of " + n + " are: " + factors);
    }
}

উন্নত আউটপুট ফরম্যাটিং

System.out.print("The factors of " + n + " are: ");
for (int i = 0; i < factors.size(); i++) {
    System.out.print(factors.get(i));
    if (i < factors.size() - 1) System.out.print(", ");
}
System.out.println();

প্রাইম ফ্যাক্টরাইজেশন (Prime Factorization)

সंख্যাকে প্রাইম ফ্যাক্টরের গুণফল হিসেবে প্রকাশ করা:

public static void primeFactors(int n) {
    System.out.print("Prime factors of " + n + ": ");
    for (int i = 2; i * i <= n; i++) {
        while (n % i == 0) {
            System.out.print(i + " ");
            n /= i;
        }
    }
    if (n > 1) System.out.print(n);
    System.out.println();
}
// 45 → 3 3 5

তুলনা

পদ্ধতিসময় জটিলতাস্পেস জটিলতাআউটপুট অর্ডার
সিম্পল লুপ (১ থেকে n)O(n)O(1)সর্টেড
অপ্টিমাইজড (√n)O(√n)O(√n)অসর্টেড (সর্ট দরকার)
প্রাইম ফ্যাক্টরাইজেশনO(√n)O(1)প্রাইম ফ্যাক্টরのみ

বাস্তব প্রয়োগ

  • ক্রিপ্টোগ্রাফি (RSA - বড় সংখ্যা ফ্যাক্টর করা কঠিন)
  • GCD/LCM ক্যালকুলেশন
  • ফ্যাক্টর হ্যান্ডলিং, ডিভাইজার সমস্যা
  • নম্বর থিওরি, ম্যাথেম্যাটিক্যাল প্রোগ্রামিং

এজ কেস হ্যান্ডলিং

public static void printFactors(int n) {
    if (n <= 0) {
        System.out.println("Please enter a positive integer");
        return;
    }
    if (n == 1) {
        System.out.println("The factors of 1 are: 1");
        return;
    }
    // ... বাকি লজিক
}
  1. জাভা প্রোগ্রাম: লুপ ব্যবহার করে অ্যালফাবেট (A থেকে Z) প্রদর্শন

  2. একটি সংখ্যার সম ফ্যাক্টরের যোগফল বের করার জাভা প্রোগ্রাম

  3. একটি সংখ্যার ইউনিক প্রাইম ফ্যাক্টরের গুণফল বের করার জাভা প্রোগ্রাম

  4. একটি সংখ্যার ফ্যাক্টরগুলির ন্যূনতম যোগফল বের করার জাভা প্রোগ্রাম