为什么我的水仙花数程序只输出153、370、371、407?

探究水仙花数的奥秘:为什么程序只输出153、370、371、407?

很多同学在编写寻找水仙花数的程序时,可能会遇到一些问题。水仙花数是指一个三位数或多位数,其各位数字的立方和等于该数本身。例如,153就是一个水仙花数,因为1³ + 5³ + 3³ = 1 + 125 + 27 = 153。 然而,当我们尝试使用某些代码寻找水仙花数时,结果却出乎意料。

下面这段代码意图寻找100到10000之间的所有水仙花数:

import java.lang.math;public class main {    public static void main(string[] args) {        int i;        for( i=100;i0){            k+=math.pow(i%10,3);            i/=10;        }        return k;    }}

这段代码的问题在于fun函数的实现。它始终将每个数字的各位数都进行三次方求和,而没有考虑到数字位数的变化。 例如,对于四位数,应该计算各位数的四次方和。

阿里云-虚拟数字人 阿里云-虚拟数字人

阿里云-虚拟数字人是什么? …

阿里云-虚拟数字人 2 查看详情 阿里云-虚拟数字人

改进后的代码如下:

public class Main {    public static void main(String[] args) {        for (int i = 100; i  0) {            int d = n % 10;            sum += Math.pow(d, digitCount);            n /= 10;        }        return sum;    }}

修正后的fun函数通过math.log10(i) + 1计算了数字的位数,从而正确地计算各位数字的对应次幂之和,最终能够正确地输出100到10000之间所有的水仙花数,包括153、370、371、407以及其他符合条件的数字。 原代码之所以只输出这四个数,是因为它错误地将所有数字都当作三位数处理。

以上就是为什么我的水仙花数程序只输出153、370、371、407?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/607344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 23:16:17
下一篇 2025年11月10日 23:25:29

相关推荐

发表回复

登录后才能评论
关注微信