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

C++ में दिए गए रेंज में K विषम भाजक वाली संख्याएं ढूंढना


इस समस्या में, हमें तीन पूर्णांक मान L, R, और k दिए जाते हैं। हमारा कार्य दिए गए रेंज में K विषम भाजक वाली संख्याएं ढूंढना है। हम रेंज [L, R] में उन संख्याओं की गिनती ढूंढेंगे जिनके ठीक k भाजक हैं।

हम 1 और संख्या को स्वयं एक भाजक के रूप में गिनेंगे।

आइए एक उदाहरण से समस्या को समझते हैं,

इनपुट

a = 3, b = 10, k = 3

आउटपुट

2

व्याख्या

रेंज 3 से 10 में ठीक 3 भाजक वाली संख्याएं हैं 4 : भाजक = 1, 2, 4 9 : भाजक = 1, 3, 9

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

इस समस्या का एक सरल समाधान k भाजकों की गिनती करना है। तो, k के विषम संख्या होने के लिए (जैसा कि समस्या में दर्शाया गया है), संख्या एक पूर्ण वर्ग होनी चाहिए। तो, हम केवल पूर्ण वर्ग संख्याओं के लिए भाजकों की संख्या गिनेंगे (यह संकलन समय बचाएगा)। और यदि भाजकों की गिनती k है, तो हम संख्या गिनती में 1 जोड़ देंगे।

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

उदाहरण

#include<bits/stdc++.h> using namespace std; bool isPerfectSquare(int n) {    int s = sqrt(n);    return (s*s == n); } int countDivisors(int n) {    int divisors = 0;    for (int i=1; i<=sqrt(n)+1; i++) {       if (n%i==0) {          divisors++;          if (n/i != i)             divisors ++;       }    }    return divisors; } int countNumberKDivisors(int a,int b,int k) {    int numberCount = 0;    for (int i=a; i<=b; i++) {       if (isPerfectSquare(i))          if (countDivisors(i) == k)             numberCount++;    }    return numberCount; } int main() {    int a = 3, b = 10, k = 3;    cout<<"The count of numbers with K odd divisors is "<<countNumberKDivisors(a, b, k);    return 0; }

आउटपुट

The count of numbers with K odd divisors is 2

  1. - C++ में दी गई लंबाई की संयुक्त संख्याओं की रेंज ज्ञात करें

    मान लीजिए हमारे पास एक संख्या n है। हमें सकारात्मक पूर्णांकों की रेंज ढूंढनी है, जहां रेंज में सभी संख्याएं संयुक्त (composite) हों, और रेंज की लंबाई n हो। यदि एक से अधिक रेंज हैं, तो कोई भी एक रेंज प्रिंट करें। संयुक्त संख्या वह संख्या है जिसमें 1 और स्वयं के अलावा कम से कम एक भाजक होता है। चूंकि र

  1. - C++ में दिए गए अंतर वाली जोड़ी ढूंढें

    समस्या विवरण एक सरणी A दी गई है जिसमें n विभिन्न तत्व हैं। हमें सरणी से एक जोड़ी (x, y) ढूंढनी है जिससे x और y का अंतर दिए गए अंतर d के बराबर हो। उदाहरण के लिए, यदि सरणी A = [10, 15, 26, 30, 40, 70] है और दिया गया अंतर 30 है, तो जोड़ियां (10, 40) और (30, 70) होंगी। हल दृष्टिकोण इस समस्या को हल करन

  1. - C++ में दिए गए सूचकांकों के साथ N फाइबोनैचि संख्याओं का GCD ढूंढना

    यहां हमें दिए गए सूचकांकों के साथ n फाइबोनैचि पदों का GCD ढूंढना है। तो सबसे पहले हमें अधिकतम सूचकांक प्राप्त करना होगा, और फाइबोनैचि पद उत्पन्न करने होंगे। कुछ फाइबोनैचि पद ऐसे हैं: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... सूचकांक 0 से शुरू होता है। तो 0वें सूचकांक पर तत्व 0 है। यदि हमें सूचकांकों {2,