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

জাভা প্রোগ্রাম: আর্মস্ট্রং (Armstrong) নাম্বার চেক করা

আর্মস্ট্রং নাম্বার কী?

আর্মস্ট্রং নাম্বার (নার্সিসিস্টিক নাম্বার) হলো এমন একটি সংখ্যা যা নিজের অঙ্কগুলোর ঘনের সমষ্টির সমান। ৩-অঙ্কের সংখ্যার জন্য: abc = a³ + b³ + c³

উদাহরণ:

  • ১৫৩: 1³ + 5³ + 3³ = 1 + 125 + 27 = ১৫৩ ✓
  • ৩৭০: 3³ + 7³ + 0³ = 27 + 343 + 0 = ৩৭০ ✓
  • ৩৭১: 3³ + 7³ + 1³ = 27 + 343 + 1 = ৩৭১ ✓
  • ৪০৭: 4³ + 0³ + 7³ = 64 + 0 + 343 = ৪০৭ ✓

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

ইনপুট:

Enter the number : 407

আউটপুট:

407 is an Armstrong number

অ্যালগরিদম

  1. প্রোগ্রাম শুরু করুন
  2. চারটি ইন্টিজার ভেরিয়েবল ঘোষণা করুন: my_input, my_temp, my_remainder, my_result
  3. ব্যবহারকারী থেকে সংখ্যা ইনপুট নিন
  4. my_result = 0, my_temp = my_input সেট করুন
  5. হোয়াইল লুপ চালান যতক্ষণ my_temp != 0
  6. my_remainder = my_temp % 10 (শেষ অঙ্ক নিন)
  7. my_result += Math.pow(my_remainder, 3) (ঘন যোগ করুন)
  8. my_temp /= 10 (শেষ অঙ্ক বাদ দিন)
  9. লুপ শেষে my_result == my_input চেক করুন
  10. ফলাফল প্রদর্শন করুন
  11. প্রোগ্রাম শেষ করুন

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

import java.util.Scanner;

public class IsArmstrong {
    public static void main(String[] args) {
        int my_input, my_temp, my_remainder, my_result;
        my_result = 0;
        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();
        
        my_temp = my_input;
        while (my_temp != 0) {
            my_remainder = my_temp % 10;
            my_result += Math.pow(my_remainder, 3);
            my_temp /= 10;
        }
        
        if (my_result == my_input)
            System.out.println(my_input + " is an Armstrong number");
        else
            System.out.println(my_input + " is not an Armstrong number");
    }
}

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

public class IsArmstrong {
    public static void main(String[] args) {
        int my_input, my_temp, my_remainder, my_result;
        my_input = 407;
        my_result = 0;
        System.out.println("The number is defined as " + my_input);
        
        my_temp = my_input;
        while (my_temp != 0) {
            my_remainder = my_temp % 10;
            my_result += Math.pow(my_remainder, 3);
            my_temp /= 10;
        }
        
        if (my_result == my_input)
            System.out.println(my_input + " is an Armstrong number");
        else
            System.out.println(my_input + " is not an Armstrong number");
    }
}

স্টেপ-বাই-স্টেপ ডেমো (৪০৭ এর জন্য)

ইটারেশনmy_tempmy_remaindermy_remainder³my_resultmy_temp (after /10)
১407734334340
২40003434
৩44644070

কোড ব্যাখ্যা

  • Math.pow(x, 3): x-এর ঘন বের করার জন্য (x³)
  • my_temp != 0: সব অঙ্ক প্রসেস হয়ে গেলে লুপ বন্ধ হয়
  • int vs double: Math.pow ডাবল রিটার্ন করে, কিন্তু int-এ স্টোর করলে অটোমেটিক কাস্ট হয়

সাধারণীকৃত আর্মস্ট্রং (n-অঙ্কের জন্য)

n-অঙ্কের সংখ্যার জন্য প্রতিটি অঙ্কের n-তম ঘাতের সমষ্টি:

public static boolean isArmstrong(int num) {
    String str = String.valueOf(num);
    int n = str.length();
    int sum = 0, temp = num;
    
    while (temp != 0) {
        int digit = temp % 10;
        sum += Math.pow(digit, n);
        temp /= 10;
    }
    return sum == num;
}

জানা আর্মস্ট্রং নাম্বারগুলো (১০০০০ পর্যন্ত)

০, ১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯, ১৫৩, ৩৭০, ৩৭১, ৪০৭, ১৬৩৪, ৮২০৮, ৯৪৭৪

টিপস

  • Math.pow() এর বদলে digit*digit*digit ব্যবহার করলে ফাস্টার হয়
  • বড় সংখ্যার জন্য long ব্যবহার করুন
  • প্রি-কম্পিউট করা ঘন মানগুলো অ্যারেয়ে রাখলে আরও দ্রুত হবে
  1. দেওয়া সংখ্যাটি ফিবোনাচি কিনা চেক করার জাভা প্রোগ্রাম

  2. জাভাতে প্রাইম নম্বর চেক করা এবং পরবর্তী প্রাইম খুঁজে বের করা (কাস্টম লজিক)

  3. জাভা প্রোগ্রাম: প্যালিনড্রোম চেক করা

  4. পাইথনে আর্মস্ট্রอง নম্বর চেক করা