盯着作业本上“水仙花数有哪些”这道题,你手里的笔是不是已经悬在半空中快十分钟了?别急,先放下笔。这玩意儿压根不用挨个试,记住四个数就能搞定。
先别急着死记,水仙花数就这四个
水仙花数特指三位数的自幂数,也就是每个位上的数字立方和等于它本身。算下来只有四个:153、370、371、407。不信?拿153验证:1³+5³+3³=1+125+27=153,刚好对上。370:3³+7³+0³=27+343+0=370。371同理,407也一样。用手算一遍,就知道这四个数没有遗漏。有些教材或考题会故意让你找出所有三位水仙花数,你直接写这四个,没人能挑错。但注意,别把0算进去——0³=0,但0不是三位数,除非题目明确说考虑0。
验证时最常翻车的三个坑,我替你踩过了
后台经常收到留言:“我用程序算水仙花数,结果只出来三个,少了一个371。”这类问题多半出在循环边界。比如有的代码误把三位数范围写成了100到999,但循环变量类型用了整型,计算立方时强转出错。还有的朋友手动算时,把407的4³算成64,0³算成0,7³算成343,加起来64+0+343=407,但中间漏了进位检查,以为不对。其实这些避坑方法很简单:写代码时务必将每个位的数字单独提取,用整数除法或取模;手算时,列个竖式,每一步都复查。另外有一个经典误区——误以为水仙花数包含四位数。四位的叫四叶玫瑰数,比如1634,别混在一起说。
记住这四个数就够了。真的够了。别再去纠结“有没有别的可能”。数学上已经证明过,三位自幂数只有这四个。如果你面试被问到“水仙花数有哪些”,直接答153、370、371、407,面试官会点头。如果追问怎么验证,你就说“每个数字立方求和再与原数比”,一句话清楚。别扯算法优化,那不是他要的。
代码跑不通?打开编辑器,检查循环里是不是漏了把整数拆成单个数字。用while循环逐位取余,再除以10缩小,重复三次。最后比较和与原始数。写不出来就去看官方文档里的int除法和取模运算,那东西最准。问题解决了就去泡杯茶,别在这耗着。








