• 如何用C#寻找100到999的所有水仙花数?


     首先解释一下何为水仙花数:水仙花数只是自幂数的一种,严格来说是三位数的个位、十位、百位的3次幂数相加等于原来的数字,称为水仙花数。(例如:1^3 + 5^3+ 3^3 = 153)

    那么如何通过C#语句来解决这个问题呢?

    分析:想要找到百位的水仙花数,要解决的问题由两个,第一个是如何让计算机正确分离出百位数的个位、十位、百位的数字。第二个是如何将其不断循环让100到999都能经过检验。

    第一个问题:将这个数值类型定义为整型int(这种数据类型的数字是没有小数点的)

    最高位数字——对100整除,则小数点后的数值都被强制去掉了。如153/100=1.53=1(int类型);

    最低位数字——对10取余数,153%10=3;

    中间位数字,利用上面两种方法有两种不同的解决思路。

    方法1:将其变为最高位数字再整除,先将这个数字减去100*最高位数字,则中间位则成为最高位数字,再用它对10整除,小数点被去掉了。

    如(153-100*1)/10=5.3=5(int)

    方法2:将其变为最低位数字,这个数字除以10之后,中间位的数字就变成了最低位。由于除法运算符的优先级高于求余运算符,所以括号可以省略。

    (153/10)%10=153/10%10=15%10=5

    第二个问题:选用while或for循环结构,使得100到999都能拆开来分别来检验。

    int i=100

    while(i<=999){循环体 ;i++;

    }

    for(表达式1;表达式2;表达式3)

    表达式1设置初始条件,表达式2是循环条件,表达式3是循环的调整。

      for (int i = 100; i < 1000; i++)

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    代码示例

    int num = 100;
    while(num <= 999)
    {
    int a = num / 100;//取出数字的百位
    int b = num / 10 % 10;//取出数字的十位
    int c = num % 10;//取出数字的个位
    if (num == a * a * a + b * b * b + c * c * c)//计算过程
    {
    Console.WriteLine(num);//输出数字
    }
    num++;
    }
    Console.ReadLine();

    其实用C#寻找100到999的所有水仙花数的方式有多种,可以利用for循环等等,这里就不一一列出。

  • 相关阅读:
    SQL Server检测是不是数字类型的函数(非ISNUMERIC)
    网页中的QQ和阿里旺旺聊天图标
    转载:用 document.readyState == "complete" 判断页面是否加载完成
    sql server行转列 列转行交叉表实现[转]
    拆分列值
    值得收藏的各类型数据库连接串事例网站
    保留几个图表生成免费资源
    MSN消息提示类(II)
    生成Excel”服务器进程80070005“错误和“异常来自 HRESULT:0x800A03EC”的错误,windows server 2008 32位和64位下的特殊设置。
    winform中DataGridView的某些属性
  • 原文地址:https://www.cnblogs.com/gassnake999/p/6854354.html
Copyright © 2020-2023  润新知