इस भाग में, हम देखेंगे कि हम किसी संख्या के सभी अभाज्य गुणनखंडों को कुशल तरीके से कैसे प्राप्त कर सकते हैं। एक संख्या है मान लीजिए n =1092, हमें इसके सभी अभाज्य गुणनखंड प्राप्त करने हैं। 1092 के अभाज्य गुणनखंड 2, 2, 3, 7, 13 हैं। इस समस्या को हल करने के लिए हमें इस नियम का पालन करना होगा -
-
जब संख्या 2 से विभाज्य हो, तो 2 प्रिंट करें, और संख्या को 2 से बार-बार विभाजित करें।
-
अब संख्या विषम होनी चाहिए। अब संख्या के 3 से वर्गमूल तक, यदि संख्या वर्तमान मान से विभाज्य है, तो प्रिंट करें, और संख्या को वर्तमान संख्या से विभाजित करके परिवर्तित करें और फिर जारी रखें।
आइए एक बेहतर विचार प्राप्त करने के लिए एल्गोरिथम देखें।
एल्गोरिदम
प्रिंटप्राइमफैक्टर्स(n)
begin while n is divisible by 2, do print 2 n := n / 2 done for i := 3 to √𝑛, increase i by 2, do while n is divisible by i, do print i n := n / i done done if n > 2, then print n end if end
उदाहरण
#include<stdio.h> #include<math.h> void primeFactors(int n) { int i; while(n % 2 == 0) { printf("%d, ", 2); n = n/2; //reduce n by dividing this by 2 } for(i = 3; i <= sqrt(n); i=i+2){ //i will increase by 2, to get only odd numbers while(n % i == 0) { printf("%d, ", i); n = n/i; } } if(n > 2) { printf("%d, ", n); } } main() { int n; printf("Enter a number: "); scanf("%d", &n); primeFactors(n); }
आउटपुट
Enter a number: 24024 2, 2, 2, 3, 7, 11, 13,