C#算法之实现阿姆斯特朗数
作者:痕迹g 发布时间:2022-08-22 17:57:24
标签: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;
}
测试输出结果:
来源:https://www.cnblogs.com/zh7791/p/14714786.html
0
投稿
猜你喜欢
- 1、问题起因最近做项目时遇到了需要多用户之间通信的问题,涉及到了WebSocket握手请求,以及集群中WebSocket Session共享
- 1. 出故障了没办法,干it这一行,就得天天面对故障,大家就是传说中的消防员,到处救火。不过,这次的故障范围有点大,宿主机都打不开了。好在监
- 本文实例为大家分享了Android Studio实现简易进制转换计算器的具体代码,供大家参考,具体内容如下1、问题描述设计并实现一个数制转换
- MyBatisMyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC
- Java处理JSON数据有三个比较流行的类库FastJSON、Gson和Jackson。JacksonJackson是由其社区进行维护,简单
- 本文实例讲述了C语言实现的猴子分桃问题算法。分享给大家供大家参考,具体如下:问题:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分
- 开发缘由:公司需要调用天眼查-开放平台 ,验证客户的的营业执照信息是否在存续期,并将企业基本信息返回,之后和使用百度图文识别的企业信息进行对
- 1、概念向下转型就是父类对象转成子类对象。我们把一个父类引用 Animal类型的引用 给了一个 Bird类型 的引用,这就是向下转型2、格式
- 本文实例为大家分享了Spring MVC多文件上传的具体代码,供大家参考,具体内容如下1)创建工程并导入JAR包2)创建多文件选择页面在 W
- 一、时区的基本概念GMT(Greenwich Mean Time),即格林威治标准时,是东西经零度的地方。人们将地球人为的分为24等份,每一
- 前沿知识ThreadLocal存储线程变量,使用set方法设置变量,使用get方法获取变量线程隔离的实现是每个Thread类有一个类型为Th
- 本文实例为大家分享了Android霓虹闪烁文字效果的具体代码,供大家参考,具体内容如下package com.example.apple.s
- 本文实例讲述了Android桌面组件App Widget用法。分享给大家供大家参考。具体如下:Android开发应用除了程序应用,还有App
- 本文章使用C#编程,制作一个端口扫描器,能够扫描本机有哪些端口开放了,并显示出来,分别使用单线程和多线程进行了比较。编译软件:Visual
- 在开发的过程中,往往会需要在组件中添加一些按钮,用于执行一些自定义的操作。例如你有一个组件A,里面有一个List<Collider&g
- 通过XmlDocument类修改XML文档数据,通常需要以下几个主要步骤或其中几个步骤。(1)获取一个包含XML文档数据的XmlDocume
- 开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定。1. 简单的数据绑定例1using (SqlConne
- Java中获取整点时间戳在实际的开发过程中,前端给后端传时间的时候,有时候传的是整点数值,比如:timeList=[00,01,02,03,
- 前言本文主要给大家介绍了关于C#中foreach遍历的用法以及c#使用foreach需要知道的一些事,分享出来供大家参考学习,下面话不多说了
- 本文实例讲述了Android创建或升级数据库时执行的语句,如果是创建或升级数据库,请使用带List参数的构造方法,带SQL语句的构造方法将在