• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

阿姆斯特朗数

阿姆斯特朗数是一个数字,等于每个数字的幂乘以总位数。 例如,诸如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;
        }

测试输出结果:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
利用C#重启远程计算机发布时间:2022-07-13
下一篇:
C#datagridview分页功能发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap