目录
一、题目
二、分析
* 水仙花数
* @题目:编写一段代码找出1000以内的水仙花数。
* (水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。
* 例如: 153=13+53+33)
* @思考解决方法:
* 1.遍历从100开始到999的数
* 2.对每个数进行辗转相除,获取个位十位和百位
* 3.对每个位进行三次幂求和
4.判断这个数,如果是,进行输出
三、代码
#include<iostream>
#include<iomanip>
using namespace std;
/*
* 水仙花数
* @题目:编写一段代码找出1000以内的水仙花数。
* (水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。
* 例如: 153=13+53+33)
* @思考解决方法:
* 1.遍历从100开始到999的数
* 2.对每个数进行辗转相除,获取个位十位和百位
* 3.对每个位进行三次幂求和
* 4.判断这个数,如果是,进行输出
*/
/*
* @函数名称:void shuixianhua(int n, int& gWei, int& sWei, int& bWei)
* @函数说明:获取三位数的个位,十位,百位
* @函数参数(int n):需要进行处理的三位数
* @函数参数(int& gWei):引用型,获取的个位参数
* @函数参数(int& sWei): 引用型,获取的十位参数
* @函数参数(int& bWei): 引用型,获取的百位参数
* @返回值:无
*/
void shuixianhua(int n, int& gWei, int& sWei, int& bWei)
{
int k;
/* 获取个位 */
gWei = n % 10;
/* 进行计算存取 */
k = n / 10;
/* 获取 十位 */
sWei = k % 10;
/* 进行计算存储 */
k /= 10;
/* 获取百位 */
bWei = k % 10;
return;
}
int main()
{
int n = 100;//水仙花数是三位数,所以直接从100开始即可
int gWei, sWei, bWei;
cout << "水仙花数:";
for (; n < 1000; n++)
{
shuixianhua(n, gWei, sWei, bWei);//获取n的个位,十位,和百位
//进行三次幂计算并求和判断是否属于水仙花数
if ((gWei * gWei * gWei + sWei * sWei * sWei + bWei * bWei * bWei) == n)
{
//是,进行输出
cout<< n << " ";
}
}
return 0;
}
四、输出结果