【C#】自幂数

【C#】自幂数



什么是自幂数

在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。
任意位数的每个数的次方相加等于他们自身;

三位自幂数 水仙花数
153=13+ 53+33=1+125+27
四位自幂数 四叶玫瑰数
1634=14+ 64+34+44=1+1296+81+256
五位自幂数 五角星数
54748=55+ 45+75+45+85=3125+1024+16807+1024+32768


同理到,六合数、北斗七星数、八仙数、九九重阳数、十全十美数…
一位自幂数是他们本身,没有二位自幂数


问题分析

怎么获得数字指定位置上的数值呢?

54748  个位   54748 % 10
54748  十位  5474 % 10
54748  百位  547 % 10
54748  千位  54 % 10
54748  万位  5 % 10

一直将每一个位上的数字移动到个位

代码实现

仅供参考(答案不止一种):

            Console.WriteLine("输入数字,查询n位自幂数,");
            //  获取用户输入的内容
            int Number = Convert.ToInt32(Console.ReadLine());
            
            //	switch 缩小自幂数的范围
            switch (Number)
            {
                case 1:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                case 10:
                    //  根据用户输入的数字来设置上限与下限
                    int Star = (int)Math.Pow(10, Number - 1);
                    int end = (int)Math.Pow(10, Number);
                    
                    for (int i = Star; i < end; i++)
                    {
                        //  定义临时变量j
                        int j = i;
                        
                        //  定义变量 和 来验证是不是自幂数
                        int sum = 0;

                        while (j!=0)
                        {
                            //  验证是不是自幂数
                            sum += (int)Math.Pow((j % 10), Number);

                            //	将每一个位上的数字移动到个位
                            j = j / 10;
                        }
                        if (i == sum)
                        {
                            Console.WriteLine(sum);
                        }
                    }
                    break;
                case 2:
                    Console.WriteLine("没有二位自幂数.");
                    break;                                     
                default:
                    Console.WriteLine("您输入的位数太大,我不想计算.");
                    break;
            }

十进制中最大的自幂数有39位,共有88个自幂数.
所以代码中运用了switch,不计算过大的数.

知识小点

循环

顺序语句
从上至下,顺序执行,根据条件是否成立,选择不同的代码执行,一段代码会重复执行多次

循环四要素

  1. 循环变量初始值
  2. 循环条件
  3. 循环体代码
  4. 让循环变量趋近于结束条件的代码

执行过程
1 -> 2 -> 3 -> 4 -> 2-> 3 -> 4 -> 2 -> 3 -> 4 ->…2
(不满足条件,退出循环)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值