水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
常见水仙花数
水仙花数又称
阿姆斯特朗数。
三位的水仙花数共有4个:
153,370,371,407;四位的水仙花数共有3个:
1634,8208,9474;
五位的水仙花数共有3个:
54748,92727,93084;
六位的水仙花数只有1个:
548834;
七位的水仙花数共有4个:
1741725,4210818,9800817,9926315;
八位的水仙花数共有3个:
24678050,24678051,88593477
源代码表示如下:
#include<iostream>
#include<cmath>
using namespace std;
void proc(int );
int main()
{
cout<<"请输入水仙花数的大小范围,比如:4表示1000——9999之间。"<<endl;
int n;
long num = 0;
cin>>n;
if(n<=0)
return -1;
if(n>=1&&n<=8)
proc(n);
else
return -1;
/
cout<<endl<<"水仙花数列表显示:"<<endl;
for (int i = 1; i < 10; i++)
{
proc(i);
}
system("pause");
return 0;
}
void proc(int n)
{
long start =(long)pow(10,n-1);
long end =(long)pow(10,n)-1;
//cout<<start<<" "<<end<<endl;
long k = 0,n1;
long sum;
cout<<start<<" 到 "<<end<<"之间的数有:";
for(long i = start; i <= end; i++)
{
k = i;
if(k>=0&&k<10) continue;//排除个位数1—9
n1 = 0;
sum = 0;
for(int j = 0; j < n; j++)
{
n1 = k%10;
sum = sum + (long)pow(n1,n);
k = (k - n1)/10;
}
if (sum == i)
{
cout<<i<<" ";
}
}
cout<<endl;
}
结果如下: