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

C++ ব্যবহার করে একটি সংখ্যার বিজোড় মুল ফ্যাক্টরের যোগফল বের করা

এই সেকশনে আমরা দেখব কিভাবে একটি সংখ্যার সব বিজোড় প্রাইম ফ্যাক্টরের যোগফল দক্ষতার সাথে বের করতে হয়। ধরি একটি সংখ্যা n = 1092, এর সব ফ্যাক্টর বের করতে হবে। 1092-এর প্রাইম ফ্যাক্টরগুলো হল 2, 2, 3, 7, 13। সব বিজোড় ফ্যাক্টরের যোগফল = 3 + 7 + 13 = 23। এই সমস্যাটি সমাধান করতে নিচের নিয়মগুলো মেনে চলতে হবে:

  • যখন সংখ্যা ২ দিয়ে বিভাজ্য হয়, সেটি বাদ দিয়ে সংখ্যাকে ২ দিয়ে বারবার ভাগ করুন।
  • এখন সংখ্যাটি বিজোড় হবে। ৩ থেকে সংখ্যার বর্গমূল পর্যন্ত, যদি সংখ্যা বর্তমান মান দিয়ে বিভাজ্য হয়, তবে ফ্যাক্টরটি যোগফলে যোগ করুন এবং সংখ্যাকে বর্তমান সংখ্যা দিয়ে ভাগ করে দিন।
  • শেষে অবশিষ্ট সংখ্যাও যোগফলে যোগ করুন যদি সেটি বিজোড় হয়।

এলগরিদম

printPrimeFactors(n):
begin
    sum := 0
    while n is divisible by 2, do
        n := n / 2
    done
    for i := 3 to sqrt(n), increase i by 2, do
        while n is divisible by i, do
            sum := sum + i
            n := n / i
        done
    done
    if n > 2, then
        if n is odd, then
            sum := sum + n
        end if
    end if
end

উদাহরণ কোড

#include <iostream>
#include <cmath>
using namespace std;

int sumOddFactors(int n) {
    int i, sum = 0;
    while (n % 2 == 0) {
        n = n / 2; // ২ দিয়ে ভাগ করে n কমান
    }
    // যেহেতু সংখ্যা ২ দিয়ে বিভাজ্য নয়, সব ফ্যাক্টর বিজোড়
    for (i = 3; i <= sqrt(n); i = i + 2) { // i ২ করে বাড়ছে শুধু বিজোড় সংখ্যা পেতে
        while (n % i == 0) {
            sum += i;
            n = n / i;
        }
    }
    if (n > 2) {
        if (n % 2 == 1)
            sum += n;
    }
    return sum;
}

int main() {
    int n;
    cout << "Enter a number: ";
    cin >> n;
    cout << "Sum of all odd prime factors: " << sumOddFactors(n);
}

আউটপুট

Enter a number: 1092
Sum of all odd prime factors: 23
  1. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  2. C++-এ ট্রেন স্টপেজ স্টেশন সংখ্যা বের করুন

  3. C++ প্রোগ্রাম: একটি নম্বরের অড ফ্যাক্টরগুলোর যোগফল বের করা

  4. পাইথনে একটি সংখ্যার বিষম গুণনীয়গুলোর যোগফল বের করার প্রোগ্রাম