用 C++ 表示的杜德尼數


給定基數中的數學數字在數論中定義為等於另一個自然數的完全立方的一個自然數,且第一個自然數的位數和等於第二個數字的位數和(維基百科)。

該數字由亨利·杜德尼發現。其數學公式如下 −

這裡,給定一個整數 n。我們的任務是檢查給定的數字 n 是否是杜德尼數 

我們舉個例子來理解一下問題,

輸入: N = 17592

輸出: 

解釋: 

給定的數字不是杜德尼數。

解決方案方法 −

解決方案在於杜德尼數的基本定義。一個數字是杜德尼數基於數字的立方根等於其位數和

演算法 −

步驟 1: 檢查 n 是否是一個完全立方。

步驟 2.1: 如果為“是”,則檢查 n 的立方根 = n 的位數和。

步驟 2.2.1: 如果為“是”,則該數字是杜德尼數 

步驟 2.2.2: 如果為“否”,則該數字不是杜德尼 數 

步驟 2.2: 如果為“否”,則該數字不是杜德尼數。

展示我們的演算法的工作原理的 C++ 程式 −

示例

即時演示

#include <bits/stdc++.h>
using namespace std;

int calcDigitSum(int n){

   int digitSum = 0;
   int digitVal;
   while (n > 0) {
      digitVal = n % 10;
      digitSum += digitVal;
      n /= 10;
   }
   return digitSum;
   
}
int checkDudeney(int N) {
   
   int cubeRoot = int( round( cbrt(N) ) );
   
   if(pow(cubeRoot, 3.0) != N){
      return 0;
   }

   int sumOfDigit = calcDigitSum(N);
   
   if (cubeRoot != sumOfDigit)
      return 0;

   return 1;
}

int main() {
   int N = 104323;
   cout<<"The number "<<N;
   if (checkDudeney(N))
      cout<<" is a dudeney number.";
   else
      cout<<" is not a dudeney number.";
   return 0;
}

輸出 −

The number 104323 is not a dudeney number.

更新於: 2021-01-22

512 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.