এই বিভাগে আমরা দেখব কিভাবে আমরা একটি সংখ্যার অনন্য মৌলিক গুণনীয়কের গুণফল একটি দক্ষ উপায়ে পেতে পারি। n =1092 বলে একটি সংখ্যা আছে, আমাদের এটির অনন্য মৌলিক গুণনীয়কগুলির গুণফল পেতে হবে। 1092 এর মৌলিক গুণনীয়কগুলি হল 2, 2, 3, 7, 13। তাই অনন্য মৌলিক গুণনীয়ক হল {2, 3, 7, 13}, গুণফল হল 546। এই সমস্যাটি সমাধান করার জন্য, আমাদের এই নিয়মটি অনুসরণ করতে হবে −
-
যখন সংখ্যাটি 2 দ্বারা বিভাজ্য হয়, তখন 2 কে গুণফল দিয়ে গুণ করুন এবং সংখ্যাটিকে 2 দ্বারা বারবার ভাগ করুন, তারপর পরবর্তী 2গুলি উপেক্ষা করা হবে৷
-
এখন সংখ্যাটি বিজোড় হতে হবে। এখন সংখ্যাটির 3 থেকে বর্গমূল পর্যন্ত শুরু করে, সংখ্যাটি যদি বর্তমান মান দ্বারা বিভাজ্য হয়, তাহলে গুণনীয়কটিকে গুণিতক হিসাবে গুণ করুন, এবং বর্তমান সংখ্যা দিয়ে ভাগ করে সংখ্যা পরিবর্তন করুন তারপর চালিয়ে যান। পরবর্তীগুলি উপরের মত উপেক্ষা করা হয়
-
এবং পরিশেষে যদি সংখ্যাটি 2-এর বেশি হয়, তবে এটি 1 নয়, তাই অবশিষ্ট সংখ্যাটিকে গুণ করুন৷
আসুন আরও ভাল ধারণা পেতে অ্যালগরিদম দেখি।
অ্যালগরিদম
ইউনিক প্রাইম প্রোডাক্ট(n)
begin prod := 1 if n is divisible by 2, then prod := prod * 2 n := n / 2 end if while n is divisible by 2, do n := n / 2 done for i := 3 to √𝑛, increase i by 2, do if n is divisible by i, then prod := prod * i n := n / i end if while n is divisible by i, do n := n / i done done if n > 2, then prod := prod * n end if end
উদাহরণ
#include<stdio.h> #include<math.h> int uniquePrimeProduct(int n){ int i, prod = 1; if(n % 2 == 0){ prod *= 2; n = n/2; } while(n % 2 == 0){//skip next 2s n = n/2; } for(i = 3; i <= sqrt(n); i=i+2){ //i will increase by 2, to get only odd numbers if(n % i == 0){ prod *= i; n = n/i; } while(n % i == 0){ //skip next i's n = n/i; } } if(n < 2){ prod *= n; } return prod; } main() { int n; printf("Enter a number: "); scanf("%d", &n); printf("Product of prime factors: %d", uniquePrimeProduct(n)); }
আউটপুট
Enter a number: 1092 Product of prime factors: 546