C#算法之实现阿姆斯特朗数
阿姆斯特朗数
阿姆斯特朗数是一个数字,等于每个数字的幂乘以总位数。 例如,诸如0、1、153、370、371和407、1634、8208、9474的数字是阿姆斯特朗数。
【C#算法之实现阿姆斯特朗数】例如:
- 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} 属于阿姆斯特朗数"); elseConsole.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; elsereturn false; }
测试输出结果:
文章图片
到此这篇关于C#算法之实现阿姆斯特朗数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 用C语言实现自动售货机
- 用C语言实现排雷游戏
- JavaScript中var和let之间有什么区别()
- 算法设计(字符串的不同排列|S2)
- 算法题(Knight巡回问题的Warnsdorff算法实现)
- 系统之家官网windows764位旗舰版系统最新推荐
- 系统之家Ghost windows732位纯净版系统最新推荐
- Android异步任务机制之AsycTask
- 原Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
- Android UI体验之全屏沉浸式透明状态栏效果