১ থেকে n পর্যন্ত প্রাকৃতিক সংখ্যাগুলোর মধ্যে যেগুলো X বা Y দিয়ে বিভাজ্য, তাদের যোগফল বের করার দুটি পদ্ধতি রয়েছে:
- লুপ এবং কন্ডিশনাল স্টেটমেন্ট ব্যবহার করে
- গাণিতিক সূত্র ব্যবহার করে
পদ্ধতি ১: লুপ ও কন্ডিশনাল
#include <stdio.h>
int main(void) {
int n = 54, x = 2, y = 5;
int sum = 0;
for (int i = 0; i <= n; i++) {
if (i % x == 0 || i % y == 0)
sum = sum + i;
}
printf("sum of %d natural numbers divisible by %d and %d is %d", n, x, y, sum);
return 0;
}
আউটপুট
sum of 54 natural numbers divisible by 2 and 5 is 881
পদ্ধতি ২: সূত্র ব্যবহার করে
n সংখ্যা পর্যন্ত x দিয়ে বিভাজ্য সংখ্যাগুলোর যোগফল: Sn/x = ((n/x)/2) × (2x + (n/x - 1) × x)
একইভাবে y এবং x×y-এর জন্য। তারপর Sx + Sy - Sxy করলে আসল যোগফল পাওয়া যায়।
#include <stdio.h>
int main() {
int n = 54, x = 2, y = 5;
int Sx, Sy, Sxy, sum;
Sx = ((n / x)) * (2 * x + (n / x - 1) * x) / 2;
Sy = ((n / y)) * (2 * y + (n / y - 1) * y) / 2;
Sxy = ((n / (x * y))) * (2 * (x * y) + (n / (x * y) - 1) * (x * y)) / 2;
sum = Sx + Sy - Sxy;
printf("sum of %d natural numbers divisible by %d and %d is %d", n, x, y, sum);
return 0;
}
আউটপুট
sum of 54 natural numbers divisible by 2 and 5 is 881
দ্বিতীয় পদ্ধতিটি লুপ ছাড়া কাজ করে তাই টাইম কমপ্লেক্সিটি ভালো। কিন্তু ছোট ইনপুটের জন্য প্রথম পদ্ধতিও ব্যবহার করা যায়।