• 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;
            }
    

    测试输出结果:

  • 相关阅读:
    骨骼动画的原理及在Unity中的使用
    GUI之ScrollView的使用
    Java编程技术之浅析Java容器技术
    Linux系统 Centos7 环境基于Docker部署Rocketmq服务
    Linux系统环境基于Docker搭建Mysql数据库服务实战
    Java编程技术之浅析JVM内存
    Java编程技术之浅析SPI服务发现机制
    Linux系统环境基于Docker搭建系统基础镜像
    Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战
    Linux Centos7 环境基于Docker部署Zookeeper服务搭建实战
  • 原文地址:https://www.cnblogs.com/zh7791/p/14714786.html
Copyright © 2020-2023  润新知