इस भाग में हम देखेंगे कि हम किसी संख्या के अद्वितीय अभाज्य गुणनखंड का गुणनफल प्रभावी तरीके से कैसे प्राप्त कर सकते हैं। एक संख्या n =1092 है, हमें इसके अद्वितीय अभाज्य गुणनखंडों का गुणनफल प्राप्त करना है। 1092 के अभाज्य गुणनखंड 2, 2, 3, 7, 13 हैं। तो अद्वितीय अभाज्य गुणनखंड {2, 3, 7, 13} हैं, गुणनफल 546 है। इस समस्या को हल करने के लिए, हमें इस नियम का पालन करना होगा -पी>
-
जब संख्या 2 से विभाज्य हो, तो 2 को गुणनफल से गुणा करें, और संख्या को 2 से बार-बार विभाजित करें, फिर अगले 2s को अनदेखा कर दिया जाएगा।
-
अब संख्या विषम होनी चाहिए। अब संख्या के 3 से वर्गमूल तक, यदि संख्या वर्तमान मान से विभाज्य है, तो गुणनखंड को गुणनफल में गुणा करें, और संख्या को वर्तमान संख्या से विभाजित करके संख्या को परिवर्तित करें फिर जारी रखें। आगे ऊपर की तरह अनदेखा कर दिया जाता है
-
और अंत में यदि संख्या 2 से बड़ी है, तो वह 1 नहीं है, इसलिए शेष संख्या को गुणा करें।
आइए बेहतर विचार प्राप्त करने के लिए एल्गोरिथम देखें।
एल्गोरिदम
uniquePrimeProduct(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