हमें एक धनात्मक पूर्णांक N दिया गया है। लक्ष्य N को घटाकर 0 करने के लिए आवश्यक संक्रियाओं की संख्या ज्ञात करना है। लागू किया गया संक्रिया N=N-P है जहाँ P, P का सबसे छोटा अभाज्य भाजक है।
आइए उदाहरणों के साथ समझते हैं
इनपुट -एन=17
आउटपुट − N से 0 तक कम करने के लिए आवश्यक दिए गए प्रकार के संचालन की संख्या है - 1
स्पष्टीकरण - 17 का सबसे छोटा अभाज्य भाजक 17 ही है। तो ऑपरेशन केवल एक बार 17-17=0 लागू किया जाता है।
इनपुट -एन=20
आउटपुट − N से 0 तक कम करने के लिए आवश्यक दिए गए प्रकार के संचालन की संख्या है − 10
स्पष्टीकरण − 20 का सबसे छोटा अभाज्य भाजक 2 है। 2 को बार-बार घटाना और अगला अभाज्य भाजक ज्ञात करना:
20%2==0, 20-2=18 18%2==0, 18-2=16 …………………..14, 12, 10, 8, 6, 4, 2, 0 Total 10 times the operation is applied.
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
सभी के लिए भी N का सबसे छोटा अभाज्य भाजक हमेशा 2 होगा और सम N में से 2 घटाने पर फिर से एक सम संख्या प्राप्त होगी। सभी विषम संख्याओं के लिए सबसे छोटा अभाज्य भाजक विषम होगा, विषम को विषम से घटाने पर और संख्या सम हो जाएगी तो 2 सबसे छोटा अभाज्य भाजक बन जाएगा। सबसे छोटा अभाज्य भाजक ज्ञात करने के लिए i=2 से i तक इस प्रकार प्रारंभ करें कि i*i
इनपुट के रूप में एक पूर्णांक N लें।
फ़ंक्शन N_to_Zero(int N) N लेता है और N को 0 से कम करने के लिए आवश्यक संचालन की संख्या देता है।
गिनती का प्रारंभिक मान 0 के रूप में लें।
मैं =2 से शुरू। ट्रैवर्सिंग शुरू करें जबकि (i*i)
यदि (i*i) N से अधिक है, तो i=N सेट करें।
संचालन की संख्या 1+(N-i)/2 होगी।
गिनती को 1+(N-i)/2 के रूप में सेट करें।
परिणाम के रूप में वापसी की गिनती।
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
उदाहरण
#include<bits/stdc++.h>
using namespace std;
int N_to_Zero(int N){
int count = 0;
int i = 2;
while((i * i) < N && (N % i)){
i++;
}
if((i * i) > N){
i = N;
}
count = 1 + (N-i)/2;
return count;
}
int main(){
int N = 10;
cout<<"Count of operations of the given type required to reduce N to 0 are: "<<N_to_Zero(N);
return 0;
}
आउटपुट
Count of operations of the given type required to reduce N to 0 are: 5