एक संख्या n को देखते हुए हमें इसके सभी गुणनखंड ज्ञात करने हैं और उन गुणनखंडों का गुणनफल ज्ञात करना है और परिणाम, अर्थात किसी संख्या के गुणनखंडों का गुणनफल देना है। किसी संख्या के गुणनखंड वे संख्याएँ होती हैं जो 1 सहित संख्या को पूर्ण रूप से विभाजित कर सकती हैं। 6 के समान गुणनखंड हैं - 1, 2, 3, 6।
अब कार्य के अनुसार हमें गुणनफल को संख्या के सभी गुणनखंडों को खोजना होगा।
इनपुट − एन =18
>आउटपुट - 5832पी>
स्पष्टीकरण - 1 * 2 * 3 * 6 * 9 * 18 =5832
इनपुट − एन =9
>आउटपुट - 27
स्पष्टीकरण - 1 * 3 * 9 =27
समस्या को हल करने के लिए नीचे इस्तेमाल किया गया तरीका इस प्रकार है -
-
इनपुट संख्या लें।
-
लूप i =1 से i*i<=num
. तक -
जांचें कि क्या num%i==0 है, तो जांचें
-
अगर num%i ==i तो उत्पाद का मान सेट करें =(उत्पाद*i)%1e7
-
अन्य उत्पाद को (उत्पाद * i)% MAX के रूप में सेट करें और उत्पाद को (उत्पाद * संख्या / i)% MAX के रूप में सेट करें।
-
-
उत्पाद लौटाएं।
एल्गोरिदम
Start In Function long long productfactor(int num) Step 1→ Declare and Initialize product as 1 Step 2→ For i = 1 and i * i <= num and i++ If num % i == 0 then, If num / i == i then, Set product as (product * i) % MAX Else Set product as (product * i) % MAX Set product as (product * num / i) % MAX Step 3→ Return product In Function int main() Step 1→ Declare and initialize n as 9 Step 2→ Print the result productfactor(n) Stop
उदाहरण
#include <stdio.h> #define MAX 1000000000 // find the product of the factors long long productfactor(int num){ long long product = 1; for (int i = 1; i * i <= num; i++){ if (num % i == 0){ //equal factors should be multiplied only once if (num / i == i) product = (product * i) % MAX; // Else multiply both else { product = (product * i) % MAX; product = (product * num / i) % MAX; } } } return product; } int main(){ int n = 9; printf("%lld\n", productfactor(n)); return 0; }
आउटपुट
यदि उपरोक्त कोड चलाया जाता है तो यह निम्न आउटपुट उत्पन्न करेगा -
27