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

C++ . में इक्विडिजिटल नंबर

इक्विडिजिटल संख्याएँ गणितीय रूप से विशेष संख्याएँ होती हैं जिनमें संख्या में अंकों की संख्या उसके अभाज्य गुणनखंड में संख्या के बराबर होती है।

इस समस्या में, हमें एक पूर्णांक मान n दिया गया है। हमारा काम n तक के सभी सम-डिजिटल नंबरों के लिए एक प्रोग्राम बनाना है।

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

इनपुट: एन =12

आउटपुट:1 2 3 5 7 10 11

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

समस्या का एक सरल समाधान यह होगा कि संख्या के गुणनखंड ज्ञात करें और जांचें कि क्या अभाज्य संख्याओं की संख्या संख्या में अंकों की संख्या के बराबर है।

मुख्य गुणनखंडों को चलनी विधि का उपयोग करके पाया जा सकता है।

एल्गोरिदम:

चरण 1: सभी अभाज्य संख्याएँ ज्ञात कीजिए।
चरण 2: संख्या n में अंकों की संख्या गिनें।

चरण 3: संख्या के सभी अभाज्य गुणनखंड ज्ञात कीजिए और उसमें अंकों की संख्या गिनिए।

चरण 4: दोनों मूल्यों की तुलना करें।
चरण 5: सही होने पर नंबर वापस करें।

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

उदाहरण

#include<bits/stdc++.h>
using namespace std;
const int MAX = 10000;

vector <int> primes;

void findAllPrimes()
{
   bool marked[MAX/2 + 1] = {0};
   for (int i=1; i*i<= (MAX -1)/2; i++)
      for (int j=(i*(i+1))<<1; j<=MAX/2; j=j+2*i+1)
         marked[j] = true;
   primes.push_back(2);
   for (int i=1; i<=MAX/2; i++)
      if (marked[i] == false)
         primes.push_back(2*i + 1);
}

bool isEquidigital(int n) {
   
   if (n == 1)
      return true;
   int number = n;
   int digitSum = 0;
   while (number > 0)
   {
      digitSum++;
      number = number/10;
   }
   int primeDigits = 0 , expCount = 0, p;
   for (int i = 0; primes[i] <= n/2; i++) {
      while (n % primes[i] == 0) {
         p = primes[i];
         n = n/p;
         expCount++;
      }
      while (p > 0) {
         primeDigits++;
         p = p / 10;
      }
      while (expCount > 1) {
         primeDigits++;
         expCount = expCount / 10;
      }
   }
   if (n != 1)
   {
      while (n > 0)
      {
         primeDigits++;
         n = n/10;
      }
   }

   return (primeDigits == digitSum);
}

int main() {

   findAllPrimes();
   int n = 11;
   cout << "Printing Equidigital Numbers less than "<<n<<" : ";
   for (int i=1; i<n; i++)
      if (isEquidigital(i))
         cout<<i<<"\t";
   return 0;
}

आउटपुट -

Printing Equidigital Numbers less than 11 : 1 2 3 5 7 10 11

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. सी++ में डुडेनी नंबर्स

    संख्या सिद्धांत में परिभाषित एक गणितीय संख्या (विकिपीडिया)। नंबर हेनरी डुडेनी . द्वारा खोजा गया था . इसका गणितीय सूत्र है - यहाँ, हमें एक पूर्णांक n दिया गया है। हमारा काम जांच करना है कि दिया गया नंबर n एक डुडनी नंबर है या नहीं। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: एन =17592 आ