首页 > 分享 > C#自恋数字黑洞—水仙花数、玫瑰花数、五角星数

C#自恋数字黑洞—水仙花数、玫瑰花数、五角星数

自恋数

当一个n位数的所有数位上数字的n次方和等于这个数本身,这个数就叫自恋数。

显然1,2,3,...,9是自恋数。【比如6的一次方仍然是6】,自恋性数字也是数字黑洞的一种。

水仙花数

三位数中的自恋数,三位数的所有数位上数字的三次方之和等于这个数本身

三位数中的自恋数有四个:153,370,371和407(这四个数被称为“水仙花数”)。

比如371=3的三次方+7的三次方+1的三次方

玫瑰花数

四位数中的自恋数,四位数的所有数位上数字的四次方之和等于这个数本身

四位的“玫瑰花数”有:1634,8208;9474;

五角星数

五位数中的自恋数,五位数的所有数位上数字的五次方之和等于这个数本身

五位的“五角星数”有:54748,92727,93084。

当数字个数大于五位时,这类数字就统称为“自幂数”。

我们使用C#程序获取10万【1~99999】以下的所有自恋数。

使用5个现场进行处理:分一位数、二位数、三位数、四位数、五位数。

控制台NarcissisticNumberDemo源程序如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace NarcissisticNumberDemo

{

class Program

{

static void Main(string[] args)

{

Console.SetWindowSize(110, 30);

//当一个n位数的所有数位上数字的n次方和等于这个数本身,这个数就叫自恋数。

//水仙花数:三位数中的自恋数,三位数的所有数位上数字的三次方之和等于这个数本身

Task taskOne = Task.Factory.StartNew(() =>

{

GetScopeNarcissisticNumber(1, 10, "一");

});

Task taskTwo = Task.Factory.StartNew(() =>

{

GetScopeNarcissisticNumber(10, 100, "二");

});

Task taskThree = Task.Run(() =>

{

GetScopeNarcissisticNumber(100, 1000, "三");

});

Task taskFour = Task.Run(() =>

{

GetScopeNarcissisticNumber(1000, 10000, "四");

});

Task taskFive = Task.Run(() =>

{

GetScopeNarcissisticNumber(10000, 100000, "五");

});

Console.ReadLine();

}

/// <summary>

/// 获取范围内的所有自恋数

/// </summary>

/// <param name="from">起始数,包含此数</param>

/// <param name="to">到倒数,不包含此数</param>

/// <param name="digitInfo">位数</param>

static void GetScopeNarcissisticNumber(int from, int to, string digitInfo)

{

Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss.fff")}]->获取【{digitInfo}】位数的所有自恋数:");

int count = 0;

for (int number = from; number < to; number++)

{

if (IsNarcissisticNumber(number))

{

count++;

}

}

Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss.fff")}]->【{digitInfo}】位数的所有自恋数共有【{count}】个");

}

/// <summary>

/// 是否是自恋数

/// 一个n位数的所有数位上数字的n次方和等于这个数本身,这个数就叫自恋数。

/// </summary>

/// <param name="number"></param>

/// <returns></returns>

static bool IsNarcissisticNumber(int number)

{

if (number < 1 || number > 99999)

{

Console.WriteLine($"无效的数字【{number}】,请输入范围在1~99999之间的数");

return false;

}

int originNumber = number;//原始数字

Stack<int> stack = new Stack<int>();

while (number != 0)

{

stack.Push(number % 10);

number = number / 10;

}

//位数

int digit = stack.Count;

int sum = 0;//求和

while (stack.Count > 0)

{

sum += (int)Math.Pow(stack.Pop(), digit);

}

if (sum == originNumber)

{

string description = string.Empty;

switch (digit)

{

case 3:

description = "【水仙花数】";

break;

case 4:

description = "【玫瑰花数】";

break;

case 5:

description = "【五角星数】";

break;

}

Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss.fff")}]->【{digit}】位数【{originNumber}】是自恋数。{description}");

return true;

}

return false;

}

}

}

运行如图

相关知识

C#自恋数字黑洞—水仙花数、玫瑰花数、五角星数
java 水仙花数(循环)
特殊的数独身数,:水仙花数, 四叶玫瑰数, 五角星数, 六合数 ,北斗七星数, 八仙数, 九九重阳数 ,十全十美数...
水仙花数的实现(python)
水仙花数解
打印出10000以内的所有的水仙花数——python
C语言判断水仙花数
计算水仙花数(广义)
vs水仙花数c语言代码,求水仙花数c语言代码怎么写
求100~999之间的水仙花数

网址: C#自恋数字黑洞—水仙花数、玫瑰花数、五角星数 https://m.huajiangbk.com/newsview1757242.html

所属分类:花卉
上一篇: 自负自恋花开(自恋如花绽放)
下一篇: 自负的花——傲慢之美(独特而自信