इस खंड में, हम देखेंगे कि कैसे हम एक संख्या के सभी अभाज्य गुणनखंडों को कुशल तरीके से प्राप्त कर सकते हैं। मान लीजिए n = 1092 है, हमें इसके सभी अभाज्य गुणनखंड प्राप्त करने हैं। 1092 के अभाज्य गुणनखंड 2, 2, 3, 7, 13 हैं। इस समस्या को हल करने के लिए, हमें इस नियम का पालन करना होगा -
- जब संख्या 2 से विभाज्य हो, तो 2 प्रिंट करें, और संख्या को बार-बार 2 से विभाजित करें।
- अब संख्या विषम होनी चाहिए। अब 3 से संख्या के वर्गमूल तक, यदि संख्या वर्तमान मान से विभाज्य है, तो प्रिंट करें, और संख्या को वर्तमान संख्या से विभाजित करके बदलें फिर जारी रखें।
आइए एल्गोरिदम देखें ताकि बेहतर विचार मिल सके।
एल्गोरिदम
printPrimeFactors(n)
begin while n is divisible by 2, do print 2 n := n / 2 done for i := 3 to √n, 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#include 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,