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

C#-এ সংখ্যা ২ দিয়ে বিভাজ্য কিনা চেক করা

একটি ইন্টিজার সংখ্যা ২ দিয়ে বিভাজ্য কিনা চেক করা সবচেয়ে সহজ এবং দ্রুত পদ্ধতি হলো মডুলো অপারেটর (`%`) ব্যবহার করা। যদি ভাগশেষ ০ হয়, তবে সংখ্যাটি জোড় (২ দিয়ে বিভাজ্য)।

বেসিক লজিক


int num = 18;

if (num % 2 == 0)
{
    Console.WriteLine("২ দিয়ে বিভাজ্য (জোড় সংখ্যা)");
}
else
{
    Console.WriteLine("২ দিয়ে বিভাজ্য নয় (বিজোড় সংখ্যা)");
}

সম্পূর্ণ উদাহরণ


using System;

namespace Demo
{
    class Test
    {
        static void Main(string[] args)
        {
            int num = 18;
            
            Console.WriteLine($"সংখ্যা: {num}");
            
            if (num % 2 == 0)
            {
                Console.WriteLine("ফলাফল: ২ দিয়ে বিভাজ্য (জোড়)");
            }
            else
            {
                Console.WriteLine("ফলাফল: ২ দিয়ে বিভাজ্য নয় (বিজোড়)");
            }
            
            // একাধিক সংখ্যা টেস্ট
            int[] numbers = { 0, 1, 2, 3, 4, 5, 10, 15, 100, -2, -3 };
            Console.WriteLine("\nএকাধিক সংখ্যা টেস্ট:");
            foreach (int n in numbers)
            {
                Console.WriteLine($"{n,4} → {(n % 2 == 0 ? "জোড়" : "বিজোড়")}");
            }
        }
    }
}

আউটপুট


সংখ্যা: 18
ফলাফল: ২ দিয়ে বিভাজ্য (জোড়)

একাধিক সংখ্যা টেস্ট:
   0 → জোড়
   1 → বিজোড়
   2 → জোড়
   3 → বিজোড়
   4 → জোড়
   5 → বিজোড়
  10 → জোড়
  15 → বিজোড়
  100 → জোড়
  -2 → জোড়
  -3 → বিজোড়

বিটওয়াইজ অপটিমাইজেশন (দ্রুততম)

কম্পাইলার আধুনিক আর্কিটেকচারে `% 2` কে অটোমেটিক্যালি `& 1` এ অপ্টিমাইজ করে দেয়। কিন্তু এক্সপ্লিসিটলি লিখলে:


// বিটওয়াইজ AND - সবচেয়ে দ্রুত
bool isEven = (num & 1) == 0;  // LSB চেক
bool isOdd = (num & 1) != 0;

এক্সটেনশন মেথড হিসেবে ব্যবহার


public static class IntExtensions
{
    public static bool IsEven(this int value) => (value & 1) == 0;
    public static bool IsOdd(this int value) => (value & 1) != 0;
    public static bool IsDivisibleBy(this int value, int divisor) => value % divisor == 0;
}

// ব্যবহার
int num = 18;
Console.WriteLine(num.IsEven());           // true
Console.WriteLine(num.IsDivisibleBy(3));   // true
Console.WriteLine(num.IsDivisibleBy(7));   // false

বিশেষ কেস হ্যান্ডলিং

ইনপুটফলাফলব্যাখ্যা
0জোড়0 % 2 = 0
নেগেটিভ (如 -2)জোড়-2 % 2 = 0 (C#-এ নেগেটিভ মডুলো)
int.MinValueজোড়-2147483648 % 2 = 0
float/doubleN/Aমডুলো কাজ করে কিন্তু প্রিসিশন ইস্যু

জেনেরিক বিভাজ্যতা চেক


public static bool IsDivisibleBy<T>(T value, T divisor) where T : struct, INumber<T>
{
    return value % divisor == T.Zero;
}

// C# 11+ / .NET 7+ Generic Math
// ব্যবহার: IsDivisibleBy(18, 2) → true

সারসংক্ষেপ

  • স্ট্যান্ডার্ড: `num % 2 == 0` (পঠনীয়, কম্পাইলার অপ্টিমাইজ করে)
  • সর্বোচ্চ দ্রুত: `(num & 1) == 0` (বিটওয়াইজ)
  • নেগেটিভ সংখ্যা: C#-এ `-3 % 2 == -1`, তাই `== 0` চেক নিরাপদ
  • এক্সটেনশন মেথড: রিয়usable এবং এক্সপ্রেসিভ
  1. এক্সেলে ঘন এবং ঘনমূল বের করার পদ্ধতি

  2. পাইথনে রিকার্শন ব্যবহার করে একটি সংখ্যার ঘাত (Power) বের করা

  3. Python-এ একটি সংখ্যার ফ্যাক্টর (গুণক) বের করা

  4. Python-এ একটি সংখ্যার ফ্যাক্টোরিয়াল (Factorial) বের করা