帶 C++ 示例的 Disarium 數?


如果數字與其各數字位置的乘積的總和等於該數字本身,則稱該數字為 Disarium 數。

noOfDigits(int num) 函式獲取數字並透過持續對數字除以 10 來返回數字的位數,直到僅剩一位為止。每次迭代,變數 digits 都會遞增以記錄位數,並在 while 迴圈結束時返回。

int noOfDigits(int num){
   int digits = 0;
   int temp = num;
   while (temp){
      temp= temp/10;
      digits++;
   }
   return digits;
}

接下來,isDisarium(int num) 是一個布林函式,獲取數字並檢查它是否為 Disarium 數。它透過 number mod 10 獲取最右側的數字,並將其乘方為 number system 中的數字位置。然後將乘方的結果新增到 sum 中。while 迴圈一直執行,直到沒有剩餘數字。如果 sum 等於 num,則返回真,否則返回假。

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);
}

示例

讓我們看看以下檢查數字是否為 Disarium 數的實現。

 即時演示

#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

更新於: 16-Jan-2021

1K+ 瀏覽量

啟動你的 職業生涯

完成課程,獲得認證

開始學習
廣告
© . All rights reserved.