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

C++-এ বড় সংখ্যার প্রাইম ফ্যাক্টর ও তাদের ফ্রিকোয়েন্সি


এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা N ≤ 10¹⁸ দেওয়া আছে। আমাদের কাজ হলো সংখ্যার সকল প্রাইম ফ্যাক্টর ও তাদের বায়ার্দি (frequency) প্রিন্ট করা।

উদাহরণ:

ইনপুট: 100 আউটপুট: 2 2   5 2 ব্যাখ্যা: 100-এর প্রাইম ফ্যাক্টরাইজেশন = 2 * 2 * 5 * 5।

সমাধানের জন্য, আমরা সংখ্যার প্রাইম ফ্যাক্টর বের করে তাদের ফ্রিকোয়েন্সি গণনা করব। প্রথমে ২ কতবার ফ্যাক্টর তা চেক করব এবং সংখ্যাকে ২ দিয়ে ভাগ করব। তারপর ৩ থেকে √n পর্যন্ত চেক করব। প্রতিটি প্রাইম ফ্যাক্টরের জন্য ভাগ করে ফ্রিকোয়েন্সি বাড়াব। সংখ্যা ১ হলে থামব। সব প্রাইম ও তাদের ফ্রিকোয়েন্সি প্রিন্ট করব।

উদাহরণ

#include <iostream>
#include <math.h>
using namespace std;

void factorize(long long n) {
    int count = 0;
    while (!(n % 2)) {
        n /= 2;
        count++;
    }
    if (count)
        cout << 2 << "\t" << count << endl;
    for (long long i = 3; i <= sqrt(n); i += 2) {
        count = 0;
        while (n % i == 0) {
            count++;
            n = n / i;
        }
        if (count)
            cout << i << "\t" << count << endl;
    }
    if (n > 2)
        cout << n << "\t" << 1 << endl;
}

int main() {
    long long N = 21000;
    cout << "The prime factors and their frequencies of the number " << N << " are \n";
    factorize(N);
    return 0;
}

আউটপুট

The prime factors and their frequencies of the number 21000 are 2   3 3   1 5   3 7   1

  1. C/C++ প্রোগ্রাম: একটি সংখ্যার ইউনিক প্রাইম ফ্যাক্টরগুলোর গুণফল বের করা

  2. C++ দিয়ে n!-এ প্রাইম নাম্বার p-এর পাওয়ার (Power) বের করা

  3. Frugal সংখ্যা চেক করা (C++)

  4. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা