এই বিভাগে, আমরা দেখব কিভাবে আমরা একটি সংখ্যার সমস্ত বিজোড় মৌলিক গুণনীয়কগুলির যোগফল একটি কার্যকর উপায়ে পেতে পারি। n =1092 বলে একটি সংখ্যা আছে, আমাদের এটির সমস্ত গুণনীয়ক পেতে হবে। 1092-এর মৌলিক গুণনীয়কগুলি হল 2, 2, 3, 7, 13৷ সমস্ত বিজোড় গুণনীয়কের যোগফল হল 3+7+13 =23৷ এই সমস্যাটি সমাধান করার জন্য, আমাদের এই নিয়মটি অনুসরণ করতে হবে −
-
যখন সংখ্যাটি 2 দ্বারা বিভাজ্য হয়, তখন সেই গুণকটিকে উপেক্ষা করুন এবং সংখ্যাটিকে বারবার 2 দ্বারা ভাগ করুন৷
-
এখন সংখ্যাটি বিজোড় হতে হবে। এখন সংখ্যাটির 3 থেকে বর্গমূল পর্যন্ত শুরু করে, সংখ্যাটি যদি বর্তমান মানের দ্বারা বিভাজ্য হয়, তাহলে যোগফলের সাথে গুণনীয়ক যোগ করুন এবং বর্তমান সংখ্যা দিয়ে ভাগ করে সংখ্যা পরিবর্তন করুন তারপর চালিয়ে যান।
-
অবশেষে, অবশিষ্ট সংখ্যাটিও যোগ করা হবে যদি অবশিষ্ট সংখ্যাটি বিজোড় হয়
আসুন আরও ভাল ধারণা পেতে অ্যালগরিদম দেখি।
অ্যালগরিদম
printPrimeFactors(n)
begin sum := 0 while n is divisible by 2, do n := n / 2 done for i := 3 to √𝑛, 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<stdio.h> #include<math.h> int sumOddFactors(int n) { int i, sum = 0; while(n % 2 == 0) { n = n/2; //reduce n by dividing this by 2 } //as the number is not divisible by 2 anymore, all factors are odd for(i = 3; i <= sqrt(n); i=i+2){ //i will increase by 2, to get only odd numbers while(n % i == 0) { sum += i; n = n/i; } } if(n > 2) { if(n%2 == 1) sum += n; } return sum; } main() { int n; printf("Enter a number: "); scanf("%d", &n); printf("Sum of all odd prime factors: %d", sumOddFactors(n)); }
আউটপুট
Enter a number: 1092 Sum of all odd prime factors: 23