C# 实现(阿姆斯特朗数)

阿姆斯特朗数

阿姆斯特朗数是一个数字,等于每个数字的幂乘以总位数。 例如,诸如0、1、153、370、371和407、1634、8208、9474的数字是阿姆斯特朗数。

例如:

  • 371 为3位数, 则用每位数的3次方

    (3 * 3 * 3)=27

    (7 * 7 * 7)=343

    (1 * 1 * 1) =1

    总数: 27+343+1=371

判断数字是否属于阿姆斯特朗数?

static void Main(string[] args) { int i = 0; int digitCount = 0; /* * 这里我们只测试int类型的最大值区间(<2,147,483,647)的结果, * 所以我们定义的长度为0 */ int[] digitArray = new int[10]; double sum = 0; Console.Write("请输入验证的数字 : "); //1.输入数字 int number = int.Parse(Console.ReadLine()); //2.用临时变量保存该数字 int temporaryNumber = number; //3.保存数字的总数以及每个数字存储在数字数组中 while (number > 0) { digitArray[i++] = number % 10; number = number / 10; digitCount++; } //4.计算结果 for (i = 0; i < digitCount; i++) //计算数字的次数幂 sum += Math.Pow(digitArray[i], digitCount); //5.判断结果 if (sum == temporaryNumber) Console.WriteLine($"{temporaryNumber} 属于阿姆斯特朗数"); else Console.WriteLine($"{temporaryNumber} 不属于阿姆斯特朗数"); Console.ReadLine(); }

测试输出结果:
技术图片

获取某个区间的所有阿姆斯特朗数

 static void Main(string[] args) { Console.Write("输入起始数字 : "); int StartNumber = int.Parse(Console.ReadLine()); Console.Write("输入结束数字 : "); int EndNumber = int.Parse(Console.ReadLine()); Console.WriteLine($"阿姆斯特朗数区间为: {StartNumber} ~ {EndNumber} 的结果为 : "); for (int i = StartNumber; i <= EndNumber; i++) { if (IsArmstrongNumber(i)) Console.WriteLine(i); } Console.ReadLine(); } static bool IsArmstrongNumber(int number) { int sum = 0; int temporaryNumber = number; int temp = 0; int length = number.ToString().Length; while (number != 0) { temp = number % 10; number = number / 10; sum += (int)Math.Pow(temp, length); } if (sum == temporaryNumber) return true; else return false; }

测试输出结果:
技术图片

相关文章