各位数字立方和等于自身的数的名称及C#无预定义方法实现
阿姆斯特朗数(Armstrong Number)
各位数字的立方和等于自身的数被称为阿姆斯特朗数,这类数属于自幂数的一种(自幂数指一个数的各位数字的n次方之和等于它本身,n为该数的位数,3位阿姆斯特朗数的n就是3)。比如153,计算过程为:1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153,完全符合定义。
C# 实现:动态输入且无预定义方法依赖
以下代码实现了动态输入数字,且全程不使用Math.Pow、ToString()、int.Parse()等预定义方法,纯手动完成数字转换、拆分与立方计算:
using System; class ArmstrongChecker { static void Main() { Console.WriteLine("请输入一个整数:"); string input = Console.ReadLine(); // 手动将输入字符串转为整数 int num = 0; for (int i = 0; i < input.Length; i++) { num = num * 10 + (input[i] - '0'); } int originalNum = num; int sumOfCubes = 0; // 手动拆分每一位数字并计算立方和 while (num > 0) { int digit = num % 10; // 手动计算立方 int cube = digit * digit * digit; sumOfCubes += cube; num = num / 10; } // 判断并输出结果 if (sumOfCubes == originalNum) { Console.WriteLine($"{originalNum} 是阿姆斯特朗数"); } else { Console.WriteLine($"{originalNum} 不是阿姆斯特朗数"); } } }
代码说明
- 输入转换:通过遍历输入字符串的每个字符,利用ASCII码差值(字符
'0'的ASCII值为48)将字符转为对应数字,再逐步累加得到整数,避免使用预定义转换方法。 - 数字拆分:使用取余运算
%10获取当前数字的最后一位,再通过整除/10移除最后一位,全程无需将数字转为字符串处理。 - 立方计算:直接通过三次乘法运算实现立方计算,不依赖
Math.Pow方法。
内容的提问来源于stack exchange,提问作者user19585404
相关产品推荐
相关产品推荐

