面试题4,打印出100-999所有的“水仙花数”。

本文深入探讨了水仙花数的概念,即一个三位数其各位数字的立方和等于该数本身。通过Java代码详细展示了如何遍历100至999之间的所有数字,找出符合条件的水仙花数,并提供了正确的位数提取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。

(例如:1^3 + 5^3+ 3^3 = 153)

package 面试;

/**
 * 水仙花数
 * @author liugang
 * @create 2018/12/19 20:07
 **/
public class Shuixianhua {

    public static void main(String[] args) {
        int a,b,c;
        for(int i=100;i<999;i++){
            a = i%10;
            b = (i/10)%10;
            c = i/100;
            if (a*a*a+b*b*b+c*c*c==i){
                System.out.println("水仙花数:"+i);
            }
        }

//        int i = 137;
//        System.out.println(137%10);
    }


}

怎么求个位数和十位数和百位数呢

            a = Integer.parseInt(String.valueOf(i).substring(0,1));
            b = Integer.parseInt(String.valueOf(i).substring(1,2));;
            c = i%100;

我之前是这样弄,但发现只打印了407,取的有问题

c取的问题,个位数的值,应该是i%10这样取

int i=137;
//取个位数 7 = 137-130;130是可以被10整除的,所以可以这样取
int c = i%10; 
//取十位数 37 = 137-100;直接是先除10,降到两位数,然后再除10取模
int b = (i/10)%10;
//取百位数 直接除100就ok了;
int a = i/100;

 

转载于:https://www.cnblogs.com/fuckingPangzi/p/10145852.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值