<!-- lang: cpp -->
//水仙花数
// 这里只是打印出 100~1000的水仙花数。
// 水仙花数的概念是 百位的立方+十位的立方+个位的立方=这个数。
// 例如 153:1^3+5^3+3^3 = 153
//思路:从100开始 循环到1000(水仙花数的要求确定了不可能小于100)
//将100~1000之间的每一个数拆开:
//百位拆开成单独的数,再算立方。
//十位拆开成单独的数,再算立方
//个位拆开成单独的数,再算立方
// 再将这三个立方的数相加,看是否等于拆开之前这个数。
#include <stdio.h>
int main()
{
//下面定义的a,b,c用来保存将要拆开的百位,十位,个位。
//在C语言中,声明变量的时候赋值,可以减少出错。
int a = 0;
int b = 0;
int c = 0;
int i = 100; //将要遍历的变量
for (i;i<1000;i++) /*i从100到1000进行循环,其实这里中间应该写成 999而不是 1000,1000已经是四位数了*/
{
//下面是分别拆开百,十,个位的数。
a = i/100;
b = (i-a)/10;
c = i-a-b;
/*如果拆开的这个数进行立方后相加,并且等于拆开之前这个数。那么就输入这个数。否则就返回进行i++*/
if ((a^3+b^3+c^3)=i) //我这里编译器有问题,不确定a^3这种写法还对不对,如果不对的话,就改成:a**3
{
printf("%d 是水仙花数",i);
}
}
return 0;
}