একটি ইন্টিজার সংখ্যা ২ দিয়ে বিভাজ্য কিনা চেক করা সবচেয়ে সহজ এবং দ্রুত পদ্ধতি হলো মডুলো অপারেটর (`%`) ব্যবহার করা। যদি ভাগশেষ ০ হয়, তবে সংখ্যাটি জোড় (২ দিয়ে বিভাজ্য)।
বেসিক লজিক
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/double | N/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 এবং এক্সপ্রেসিভ