এখানে আমরা দেখব কিভাবে একটি বড় সংখ্যা ১৩ দিয়ে বিভাজ্য কিনা চেক করতে হয়। যেহেতু সংখ্যাটি বড়, তাই স্ট্রিং হিসেবে নেওয়া হয়।
একটি সংখ্যা ১৩ দিয়ে বিভাজ্য হবে যদি নিচের শর্তগুলো পূরণ করে:
- একটি সংখ্যা ১৩ দিয়ে বিভাজ্য হবে যদি এবং কেবল যদি ডান থেকে বামে তিন অঙ্কের ব্লকে বारी বاری যোগ ও বিয়োগ করলে (alternating sum) ফলাফল ১৩ দিয়ে বিভাজ্য হয়। উদাহরণ: 2911285, ১৩ দিয়ে বিভাজ্য কারণ অল্টারনেটিং সম = 2 - 911 + 285 = -650 যা ১৩ দিয়ে বিভাজ্য।
- একটি সংখ্যা ১৩ দিয়ে বিভাজ্য হবে যদি এবং কেবল যদি শেষ অঙ্ককে ৪ দিয়ে গুণ করে বাকি অংশে যোগ করলে ফলাফলও ১৩ দিয়ে বিভাজ্য হয়। উদাহরণ: 2353। নিয়ম প্রয়োগ করলে 235 + 3*4 = 247। আবার 24 + 7*4 = 52। ৫২ যেহেতু ১৩ দিয়ে বিভাজ্য, দেওয়া সংখ্যাও বিভাজ্য।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
bool isDiv13(string num) {
int length = num.size();
if (length == 1 && num[0] == '0')
return true;
if (length % 3 == 1) { // দৈর্ঘ্য ৩ দিয়ে বিভাজ্য নয়, রিমেইন্ডার ১
num += "00";
length += 2;
} else if (length % 3 == 2) { // রিমেইন্ডার ২
num += "0";
length += 1;
}
int sum = 0, p = 1;
for (int i = length - 1; i >= 0; i--) {
int set = 0;
set += (num[i--] - '0');
set += (num[i--] - '0') * 10;
set += (num[i] - '0') * 100;
sum = sum + set * p;
p *= (-1);
}
sum = abs(sum);
return (sum % 13 == 0);
}
int main() {
string num = "83959092724";
if (isDiv13(num)) {
cout << "Divisible";
} else {
cout << "Not Divisible";
}
return 0;
}
আউটপুট
Divisible