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


猜你喜欢
- 启动命令:java -jar weichi-1.0.0.jar将命令打印到1.log上 java -jar weichi-1.0.0.jar
- 最近小明的bug有点多,忙的连王者荣耀都顾不上玩了,导致现在不得不抽点时间研究一下作为当前大多Java程序员开发工具的IDEA DEBUG功
- 实现思路收集路径点集。平均采样路径点集。将路径点集转为 LineB。把 LineB 数据传给 Pat
- 一、相关知识SearchView控件:以下是几个简单网址:SearchView简单用法:Android搜索框(SearchView)的功能和
- 我们在编写网络程序的时候,经常会进行如下操作:申请一个缓冲区从数据源中读入数据至缓冲区解析缓冲区的数据重复第2步表面上看来这是一个很常规而简
- 一、前言canal:阿里巴巴 MySQL binlog 增量订阅&消费组件https://github.com/alibaba/ca
- 目录一、SpringBoot 使用 Nacos Config 实现多环境切换1. 现象2. 引入依赖3. 添加bootstrap.yaml配
- EntityWrapper使用解析1、项目中引入jar包,我这里使用Maven构建<dependency> &nbs
- 本文实例讲述了Android编程之重力感应用法。分享给大家供大家参考,具体如下:重力感应主要是依靠手机的加速度传感器(acceleromet
- Path接口1、Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路径,例如 / 或 C:\ ,而
- 对象嵌套关联查询一对多List集合查询mybatis嵌套关联查询如下由于我的是一对集合查询,所以我有两个类。@Data@TableName(
- 一,在一个公共类里创建一个公共方法,然后需要验证的页面都调用这个方法 //在此例子中,就是在入口函数里调用CheckLogin()
- Java语言是一种半编译半解释的语言。Java的用户程
- 混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比較小的.apk文件,该文件比較难进行
- 背景最近公司的客户要求,分配给员工的任务除了有微信通知外,还希望PC端的网页也能实时收到通知。管理员分配任务是在我们的系统A,而员工接受任务
- 代码:package com.lwj.test.proxy;import java.lang.reflect.InvocationHandl
- 本文实例讲述了Java基于socket实现的客户端和服务端通信功能。分享给大家供大家参考,具体如下:以下代码参考马士兵的聊天项目,先运行Ch
- Android 注解Annotation相关文章:Android AOP注解Annotation详解(一)Android AOP之注解处理解
- 本文实例为大家分享了java实现简单猜数字的具体代码,供大家参考,具体内容如下代码不多说,图片自加,实现功能有数字比大小,菜单开始,帮助,退
- 首先我们看看为什么添加Watch。ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建