Keep on going never give up.

Let's Go

C#【练习】求水仙花数的算法实现

C#Lonely2019-05-20 03:11:00132次0条

//编一个程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
//例如:153=1*1*1+5*5*5+3*3*3,所以153是“水仙花数”;
//提示用 %及/运算符分离数字,用Math.pow()方法求三次方;
//Math.pow(x,n)方法,表示x的n次幂

//方法一
int sxh, g, s, b;//定义变量水仙花,个位,十位,百位;             
for (sxh = 100; sxh < 1000; sxh++)
{
    g = sxh % 100 % 10; //个位,例153%100等于53,53再%10等于3;
    s = sxh % 100 / 10; //十位,例153%100等于53,53再/10等于5;
    b = sxh / 100; //百位,例153/100等于1;              
    if (sxh == Math.Pow(g, 3) + Math.Pow(s, 3) + Math.Pow(b, 3))
    {
        Console.WriteLine(sxh);
    }
}

//方法二
int x = 0,y = 0,z= 0;
for (int i = 100; i < 1000; i++)
{
    x = i / 100; //百位
    Math.DivRem(i, 100, out y); //计算两个32位有符号整数的商,并通过输出参数返回余数。
    y = y / 10; //十位
    Math.DivRem(i, 10, out z);
    x = x * x * x;
    y = y * y * y;
    z = z * z * z;
    if((x+y+z)==i)
        Console.WriteLine(i);
}

//方法三、穷举法
for(int i=1;i<=9;i++)
{
    for(int j=0;j<=9;j++)
    {
        for(int k=0;k<=9;k++)
        {
            if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
                Console.WriteLine(i*100+j*10+k);
	}
    }
}
Console.ReadKey();


暗锚,解决锚点偏移

文章评论

    嘿,来试试登录吧!