एक संख्या जिसके अंकों का योग उनकी संबंधित स्थिति की घात के साथ संख्या के बराबर होता है, उसे डिजेरियम नंबर कहा जाता है।
noOfDigits(int num) फंक्शन संख्या लेता है और लगातार संख्या को 10 से विभाजित करके अंकों की संख्या वापस करता है जब तक केवल इकाई का स्थान नहीं बचता। प्रत्येक पुनरावृत्ति पर अंक वेरिएबल को अंकों का ट्रैक रखने के लिए बढ़ाया जाता है और एक बार व्हाइल लूप समाप्त होने पर वापस किया जाता है।
int noOfDigits(int num){
int digits = 0;
int temp = num;
while (temp){
temp = temp/10;
digits++;
}
return digits;
}
अगला, isDisarium(int num) एक बूलियन फंक्शन है जो संख्या लेता है और जांचता है कि यह डिजेरियम नंबर है या नहीं। यह संख्या मॉड 10 द्वारा दाहिने अंक को लेता है और इसे संख्या प्रणाली में अंक स्थान की घात देता है। संख्या को घात देने का परिणाम फिर योग में जोड़ा जाता है। व्हाइल लूप तब तक चलता है जब तक कोई अंक नहीं बचता। यदि योग num के बराबर है तो सत्य वापस किया जाता है अन्यथा यह असत्य वापस करता है।
bool isDisarium(int num){
int digits = noOfDigits(num);
int sum = 0;
int temp = num;
while (temp){
int rightDigit = temp % 10;
sum = sum + pow(rightDigit, digits--);
temp = temp / 10;
}
return (sum == num);
}
उदाहरण
किसी संख्या के डिजेरियम नंबर होने या न होने की जांच के लिए निम्नलिखित कार्यान्वयन देखें।
#include <iostream>
#include <math.h>
using namespace std;
int noOfDigits(int num){
int digits = 0;
int temp = num;
while (temp){
temp = temp/10;
digits++;
}
return digits;
}
bool isDisarium(int num){
int digits = noOfDigits(num);
int sum = 0;
int temp = num;
while (temp){
int rightDigit = temp % 10;
sum = sum + pow(rightDigit, digits--);
temp = temp / 10;
}
return (sum == num);
}
int main(){
int num = 518;
if (isDisarium(num))
cout << num << " is a Disarium Number" << endl;
else
cout << num << " is not a Disarium Number" << endl;
return 0;
}
आउटपुट
उपरोक्त कोड निम्नलिखित आउटपुट देगा:
518 is a Disarium Number