各位数字的阶乘

    xiaoxiao2021-11-29  68

    145是个有趣的数,因为1! + 4! + 5! = 1 + 24 + 120 = 145。 找出所有各位数字的阶乘和等于其本身的数,并求它们的和。 注意:因为1! = 1和2! = 2不是和的形式,所以它们并不在讨论范围内。

    package EULER34; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2016/11/18. * 各位数字的阶乘 * 145是个有趣的数,因为1! + 4! + 5! = 1 + 24 + 120 = 145。 * 找出所有各位数字的阶乘和等于其本身的数,并求它们的和。 * 注意:因为1! = 1和2! = 2不是和的形式,所以它们并不在讨论范围内。 * 思路:9!=362880,设n位数,当362880*n<10^n,时,各位阶乘和不可能等于其本身,求出n大于6,所以只有n<=6时才可能满足 */ public class EULER34 { public static void main(String[] args){ long start = System.currentTimeMillis(); int result = 0; for (int i=10;i<10000000;i++){ List<Integer> bits = new ArrayList<Integer>(); int bit = i; while (bit>0){ bits.add(bit); bit /= 10; } int sum = 0; for (int j:bits){ int muti = 1; for (int k=1;k<=j;k++){ muti *= k; } sum += muti; } if (sum == i) { result += sum; System.out.println(i); } } System.out.println("result:"+result); long end = System.currentTimeMillis(); System.out.print("总用时:"+(end-start)+"毫秒"); } }
    转载请注明原文地址: https://ju.6miu.com/read-678711.html

    最新回复(0)