एक संख्या जिसके अंकों का योग उसकी संबंधित स्थिति से संचालित होता है, वह संख्या के बराबर होता है, एक डिसैरियम संख्या कहलाती है।
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) एक बूलियन फ़ंक्शन है जो संख्या लेता है और जांचता है कि यह डिसैरियम संख्या है या नहीं। यह संख्या mod 10 द्वारा सबसे दाहिना अंक लेता है और इसे संख्या प्रणाली में अंकों के स्थान पर शक्ति देता है। संख्या को शक्ति देकर परिणाम को योग में जोड़ा जाता है। जबकि लूप तब तक चलता है जब तक कोई अंक न बचे। यदि योग संख्या के बराबर है तो सत्य लौटाया जाता है अन्यथा यह झूठा लौटाता है।
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