题目:从键盘输入一个正整数N(N>=3),要求按递增顺序输出所有N位水仙花数,每个数字占一行。
水仙花数的定义:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。当然,水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
编程语言:C++
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a;
int i,j,t;
int m;
cout << "请输入你想找到的水仙花数的位数" << endl;
cin >> m;
double first = pow ( 10, m - 1);
double last = 10 * first ;
for(i = first; i < last; i++)
{
t = i;
double sum = 0; //这句赋值语句必须拿到for循环内部
for (j = 0; j < m; j++)
{
a = t % 10;
sum += pow(a, m); //a的m次幂
t = t / 10;
}
if (sum == i)
{
cout <<"水仙花数:" << i << endl;
}
}
cout << "你已找到"<< first <<"至"<< last <<"范围内的所有水仙花数" << endl;
return 0;
}
程序实现截图: