带 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.