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

作者:痕迹g 时间:2022-08-22 17:57:24 

阿姆斯特朗数

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

测试输出结果:

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

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

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#算法之实现阿姆斯特朗数

来源:https://www.cnblogs.com/zh7791/p/14714786.html

标签:C#,算法,阿姆斯特朗数
0
投稿

猜你喜欢

  • Java数据结构之数组(动力节点之Java学院整理)

    2023-09-23 21:20:12
  • Java简单使用redis-zset实现排行榜

    2021-06-07 20:34:54
  • Java无限级树(递归)超实用案例

    2023-08-01 13:31:57
  • MyBatis-Plus 自定义sql语句的实现

    2022-12-24 23:16:16
  • 关于Kotlin写界面时诸多控件的点击事件

    2023-01-28 12:34:51
  • SpringMVC中的几个模型对象

    2021-09-01 19:25:44
  • Android ViewPager小圆点指示器

    2022-05-09 11:21:43
  • 配置Ant执行Jmeter脚本过程详解

    2023-11-09 22:35:29
  • 关于@RequestBody和@RequestParam注解的使用详解

    2023-01-20 09:08:20
  • Java的Spring框架下的AOP编程模式示例

    2023-11-02 00:52:25
  • C#使用NPOI导入Excel的方法详解

    2021-08-29 07:39:35
  • Mybatis中的@Select、foreach用法

    2023-06-05 00:07:20
  • 快速了解Maven

    2022-10-22 20:18:33
  • C#中const用法详解

    2021-08-12 15:30:29
  • c#使用S22.Imap收剑灵激活码邮件代码示例(imap收邮件)

    2022-11-27 20:59:37
  • Android实现加载广告图片和倒计时的开屏布局

    2023-04-29 13:54:45
  • Java的“Goto”与标签及使用详解

    2023-11-11 03:56:09
  • android仿微信联系人索引列表功能

    2023-06-22 17:33:30
  • 浅谈Spring中@NotEmpty、@NotBlank、@NotNull区别

    2023-01-02 08:15:49
  • C#私有构造函数使用示例

    2021-12-31 02:14:53
  • asp之家 软件编程 m.aspxhome.com