水仙花数算法分析

水仙花数算法分析

水仙花算法:
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。(例如:1^ 3+5^ 3+3^ 3 =153);给你A和B区间内有多少个水仙花数。

public class mianshiTest {

    //1^3+5^3+3^3=153

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num1 = scanner.nextInt();//A
        int num2 = scanner.nextInt();//B
        int count = 0;//水仙花数的个数
        int max = Math.max(num1, num2);
        int min = Math.min(num1, num2);
       if (min < 100) {
            System.out.println("整数最少3位");
            return;
        } else {
            //判断区间的每一个数是否是水仙花数,i是区间的整数
            for (int num = min; num <= max; num++) {
                int sum = 0;
                //n是整数i的位数
                int n = fun01(num);
                for (int i = 0; i < n; i++) {
                    int num3 = 0;
                    num3 = (int) (num / Math.pow(10,i));
                    num3 = num3 % 10;
                    sum += Math.pow(num3, n);
                }
                if (sum == num) {
                    count++;
                }
            }
        }
        System.out.println("["+min+","+max+"]区间的水仙花数的个数为:"+count);
    }

    /**
     * 计算数字的位数
     *
     * @param num
     * @return
     */
    public static int fun01(int num) {
        int n = 0;
        while (num != 0) {
            num = num / 10;
            n++;
        }
        return n;
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值