问题描述如下:
“n!=n*(n-1)*...*2*1,求100!的各位数字之和。”
上代码:
/**
* n!
*
* @param n
* @return
*/
private static Long factorial(Long n) {
Long result = n;
for (Long i = n - 1; i > 1; i--) {
result *= i;
}
return result;
}
由于超出100!的范围,使用BigDecimal,代码如下:
/**
* n!
*
* @param n
* @return
*/
private static String factorial(Long n) {
BigDecimal result = new BigDecimal(n);
for (Long i = n - 1; i > 1; i--) {
result = result.multiply(new BigDecimal(i));
}
return result.toString();
}
求和:
/**
* 求n!的各位数字之和
* @param s
* @return
*/
private static int sum(String s){
int sum=0;
for (int i = 0; i < s.length(); i++) {
sum+= Integer.parseInt(s.charAt(i)+"");
}
return sum;
}
通过sum(factorial(100L))可以得到结果:648
请不吝赐教。
@anthor ClumsyBirdZ