Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में प्राकृतिक संख्या N के k-वें सबसे छोटे भाजक को ज्ञात करें


इस समस्या में, हमें दो पूर्णांक मान N और k दिए गए हैं। हमारा कार्य प्राकृतिक संख्या N के k-वें सबसे छोटे भाजक को ज्ञात करना है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट : N = 15, k = 3 आउटपुट : 5

व्याख्या −

15 के गुणनखंड 1, 3, 5, 15 हैं। तीसरा सबसे छोटा 5 है।

समाधान दृष्टिकोण

समस्या का एक सरल समाधान संख्या के गुणनखंडों को ढूंढना और उन्हें सॉर्टेड तरीके से संग्रहीत करना और k-वां मान प्रिंट करना है।

सॉर्टिंग के लिए, हम root(N) तक लूप करेंगे और जांचेंगे कि N, i से विभाज्य है या नहीं। और i और (N/i) के मान को एक सरणी में संग्रहीत करेंगे और इसे सॉर्ट करेंगे। इस सॉर्टेड सरणी से, k-वां मान प्रिंट करें।

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम

#include <bits/stdc++.h> using namespace std; void findFactorK(int n, int k){    int factors[n/2];    int j = 0;    for (int i = 1; i <= sqrt(n); i++) {       if (n % i == 0) {          factors[j] = i;          j++;          if (i != sqrt(n)){             factors[j] = n/i;             j++;          }       }    }    sort(factors, factors + j);    if (k > j)       cout<<"मौजूद नहीं";    else       cout<<factors[k-1]; } int main(){    int N = 16,    k = 3;    cout<<k<<"-वां सबसे छोटा भाजक संख्या "<<N<<" का है ";    findFactorK(N, k);    return 0; }

आउटपुट

3-वां सबसे छोटा भाजक संख्या 16 का है 4

एक अन्य दृष्टिकोण

समस्या को हल करने का एक अन्य दृष्टिकोण दो सरणियों का उपयोग करना है जो सॉर्टेड हैं।

एक मान i संग्रहीत करता है, आरोही क्रम में सॉर्टेड।

दूसरा मान N/i संग्रहीत करता है, अवरोही क्रम में सॉर्टेड।

हम किसी भी सरणी से k-वां सबसे छोटा मान ढूंढेंगे। यदि k सरणी के आकार से बड़ा है, तो यह दूसरी सरणी में अंत से मौजूद है।

अन्यथा यह पहली सरणी में मौजूद है।

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम

#include <bits/stdc++.h> using namespace std; void findFactorK(int n, int k){    int factors1[n/2];    int factors2[n/2];    int f1 = 0,f2 = 0;    for (int i = 1; i <= sqrt(n); i++) {       if (n % i == 0) {          factors1[f1] = i;          f1++;          if (i != sqrt(n)){             factors2[f2] = n/i;             f2++;          }       }    }    if (k > (f1 + f2))       cout<<"मौजूद नहीं";   else{     if(k <= f1) cout<<factors1[f1-1]; else cout<<factors2[k - f2 - 1]; } } int main(){ int N = 16, k = 3; cout<<k<<"-वां सबसे छोटा भाजक संख्या "<<N<<" का है "; findFactorK(N, k); return 0; }

आउटपुट

3-वां सबसे छोटा भाजक संख्या 16 का है 4

  1. C++ का उपयोग करके पेंटागोनल पिरामिडल संख्या ज्ञात करना C++ का उपयोग करके पेंटागोनल पिरामिडल संख्या ज्ञात करना

    एक पेंटागोनल पिरामिडल संख्या पेंटागोनल बेस पिरामिड में वस्तुओं की संख्या के बराबर होती है। नीचे कुछ पेंटागोनल संख्याएं देखें। N तक पेंटागोनल संख्याओं का योग Nवीं पेंटागोनल पिरामिडल संख्या के बराबर होता है। इस लेख में, हम Nवीं पेंटागोनल पिरामिडल संख्या खोजने पर चर्चा करेंगे, उदाहरण के लिए: इनपुट:

  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

  1. C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें

    बिंदु X और Y के बीच n संख्या में इंटरमीडिएट ट्रेन स्टेशन हैं। उन विभिन्न तरीकों की गणना करें जिनसे ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई दो स्टेशन एक-दूसरे के बगल में न हों। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या ज्ञात करने के लिए हर संभव दृष्टिकोण की व्य