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

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

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

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

Input : N = 15, k = 3
Output : 5

स्पष्टीकरण -

Factors of 15 are 1, 3, 5, 15
3rd smallest is 5

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

समस्या का एक सरल समाधान है संख्या के गुणनखंडों को खोजना और उन्हें क्रमबद्ध तरीके से संग्रहीत करना और kth मानों को प्रिंट करना।

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

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#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<<"Doesn't Exist";
   else
      cout<<factors[k-1];
}
int main(){
   int N = 16,
   k = 3;
   cout<<k<<"-th smallest divisor of the number "<<N<<" is ";
   findFactorK(N, k);
   return 0;
}

आउटपुट

3-th smallest divisor of the number 16 is 4

एक और तरीका

समस्या को हल करने का एक अन्य तरीका दो सरणियों का उपयोग करना है जो क्रमबद्ध हैं।

एक भंडारण मान i, आरोही क्रम में क्रमबद्ध।

अन्य भंडारण मूल्य N/i, अवरोही क्रम में क्रमबद्ध।

हम दो सरणियों में से किसी एक के सबसे छोटे मान के रूप में kth प्राप्त करेंगे। यदि 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<<"Doesn't Exist";
   else{
      if(k <= f1)
         cout<<factors1[f1-1];
      else
         cout<<factors2[k - f2 - 1];
   }
}
int main(){
   int N = 16,
   k = 3;
   cout<<k<<"-th smallest divisor of the number "<<N<<" is ";
   findFactorK(N, k);
   return 0;
}

आउटपुट

3-th smallest divisor of the number 16 is 4

  1. C++ का उपयोग करके पंचकोणीय पिरामिड संख्या ज्ञात कीजिए

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

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

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

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

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