C#算法之实现阿姆斯特朗数

 更新时间:2022年02月11日 08:30:09   作者:痕迹g  
这篇文章介绍了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;
        }

测试输出结果:

 到此这篇关于C#算法之实现阿姆斯特朗数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 深入理解C#之枚举

    深入理解C#之枚举

    这篇文章主要介绍了C#中可枚举类型,IEnumerable和IEnumerator接口及其泛型实现和迭代器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C#使用标签软件Bartender打印标签模板

    C#使用标签软件Bartender打印标签模板

    这篇文章介绍了C#使用标签软件Bartender打印标签模板,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • Unity 如何设定 Animator分割播放

    Unity 如何设定 Animator分割播放

    这篇文章主要介绍了Unity 设定 Animator分割播放的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C# websocket及时通信协议的实现方法示例

    C# websocket及时通信协议的实现方法示例

    说到websocket大家一定不会陌生,WebSocket是HTML5一种新的协议。下面这篇文章主要给大家介绍了关于C# websocket及时通信协议的实现方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-11-11
  • 详解MongoDB for C#基础入门

    详解MongoDB for C#基础入门

    本篇文章主要介绍了MongoDB for C#基础入门,具体介绍了c#中关于对MongoDB的连接,插入,查询等,有需要的可以了解一下。
    2016-12-12
  • C#列表List<T>、HashSet和只读集合介绍

    C#列表List<T>、HashSet和只读集合介绍

    这篇文章介绍了C#中的列表List<T>、HashSet和只读集合,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • c#剪切板操作的简单实例

    c#剪切板操作的简单实例

    这篇文章介绍了c#剪切板操作的简单实例,有需要的朋友可以参考一下
    2013-11-11
  • 全面分析c# LINQ

    全面分析c# LINQ

    这篇文章主要介绍了c# LINQ的相关资料,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-08-08
  • C#通过反射创建自定义泛型

    C#通过反射创建自定义泛型

    这篇文章主要介绍了C#通过反射创建自定义泛型的方法,需要的朋友可以参考下
    2014-08-08
  • C# FileStream复制大文件

    C# FileStream复制大文件

    这篇文章主要为大家详细介绍了C# FileStream复制大文件的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论