21xrx.com
2024-11-22 09:58:42 Friday
登录
文章检索 我的文章 写文章
用C++语言编写水仙花数求解程序
2023-06-28 16:03:28 深夜i     --     --
C++ 水仙花数 求解程序

水仙花数是指一个n位数(n>=3),其每个数字的n次幂之和等于其本身。也就是说,如果一个n位数每个数字的n次幂之和等于它本身,那么这个数就是一个水仙花数。

例如,153是一个水仙花数,因为1^3+5^3+3^3=153。

如何使用C++程序来判断一个数是否为水仙花数呢?我们需要定义一个函数isNarcissisticNumber()来判断一个num是否为水仙花数。该函数的实现如下:

  bool isNarcissisticNumber(int num){

    int n = num, sum = 0, m = 0;

    while(n){

      m = n % 10;

      sum += pow(m, 3);

      n /= 10;

    }

    return sum == num;

  }

此函数的含义为:使用while循环取出num的每一位数字m,将其m的3次幂加起来得到sum,每次循环将n除以10来去掉个位,当n为0时结束循环,最后判断sum是否等于num,若等于则说明num是水仙花数,返回true,否则返回false。

接下来的代码用于测试上面的函数,从100到999找到所有的水仙花数:

  for(int i=100; i<=999; i++){

    if(isNarcissisticNumber(i))

      cout<<<" ";

  }

程序的输出结果是:

  153 370 371 407

这几个数字都是三位数字,满足每个数字的三次幂之和等于它本身,因此这些数字都是水仙花数。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复