इस समस्या में, हमें एक संख्या N दी गई है। हमारा कार्य [1, n] रेंज में सभी संख्याओं के भाजकों की संख्या ज्ञात करना है।
उदाहरण से समझते हैं:
इनपुट: N = 7 आउटपुट: 1 2 2 3 2 4 2
समाधान दृष्टिकोण
समस्या का एक सरल समाधान 1 से N तक शुरू करना और प्रत्येक संख्या के लिए भाजकों की संख्या गिनना और उन्हें प्रिंट करना है।
उदाहरण 1
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम:
#include <iostream> using namespace std; int countDivisor(int N){ int count = 1; for(int i = 2; i <= N; i++){ if(N%i == 0) count++; } return count; } int main(){ int N = 8; cout<<"The number of divisors of all numbers in the range are \t"; cout<<"1 "; for(int i = 2; i <= N; i++){ cout<<countDivisor(i)<<" "; } return 0; } आउटपुट
The number of divisors of all numbers in the range are 1 2 2 3 2 4 2 4
समस्या को हल करने का एक अन्य दृष्टिकोण मानों के इन्क्रीमेंट का उपयोग करना है। इसके लिए, हम (N+1) आकार की एक सरणी बनाएंगे। फिर, 1 से N तक शुरू करके, हम प्रत्येक मान i के लिए जांचेंगे, हम i से कम n के सभी गुणकों के लिए सरणी मान बढ़ाएंगे।
उदाहरण 2
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम:
#include <iostream> using namespace std; void countDivisors(int N){ int arr[N+1]; for(int i = 0; i <= N; i++) arr[i] = 1; for (int i = 2; i <= N; i++) { for (int j = 1; j * i <= N; j++) arr[i * j]++; } for (int i = 1; i <= N; i++) cout<<arr[i]<<" "; } int main(){ int N = 8; cout<<"The number of divisors of all numbers in the range are \t"; countDivisors(N); return 0; } आउटपुट
The number of divisors of all numbers in the range are 1 2 2 3 2 4 2 4