你要求的这个4位数也叫
四叶玫瑰数,
由于
水仙花数的特性,即n位数,是各个位数的n次幂之和,
可以定义一个算法,
我以最简单的
遍历求值算法为例,
static void Main(string[] args)
{
for(int i=1000;i<10000;i++)
{
//i肯定是4位数
string orig_num = i.ToString();
double _tho = Convert.ToDouble(orig_num.Substring(0, 1));//千
double _hun = Convert.ToDouble(orig_num.Substring(1, 1));//百
double _ten = Convert.ToDouble(orig_num.Substring(2, 1));//十
double _one = Convert.ToDouble(orig_num.Substring(3, 1));//个
double sum = Math.Pow(_tho, 4) + Math.Pow(_hun, 4) + Math.Pow(_ten, 4) + Math.Pow(_one, 4);
if(sum==i) //如果满足各个位数的4次方之和等于这个数本身,输出
{
Console.WriteLine(i.ToString());
}
}
Console.ReadKey();
}
可以算出3个4位水仙花数。
以上代码可以稍微拓展一下,利用orig_num.Lenght 再做一个遍历,求出各个位数的值,然后求平方, 即可以算出所有
双精度浮点数索引内的水仙花数。