1000!(阶乘)一共有多少个0,尾部有多少个0
package test;
import java.math.BigInteger;
public class Jiecheng1000_compute_0 {
public static void main(String[] args) {
BigInteger bi1 = new BigInteger("1");
for (int i = 1; i <= 1000; i++) {
BigInteger bi2 = new BigInteger(i + "");
bi1 = bi2.multiply(bi1);
}
// 将BigInteger转为String类型
String str = bi1.toString();
// 计算1000!有多少个0
int count = 0;
for (int i = 0; i < str.length(); i++) {
if ('0' == str.charAt(i)) {
count += 1;
}
}
System.out.println(count);
// 计算1000!尾部有多少个0
// String类不能进行数据反转,StringBuffer可以
StringBuffer sb = new StringBuffer(bi1.toString());
// 实现数据串反转
String str2 = sb.reverse().toString();
int count2 = 0;
for (int i = 0; i < str2.length(); i++) {
if ('0' == str2.charAt(i)) {
count2 += 1;
} else {
break;
}
}
System.out.println(count2);
}
}
count(一共有0数):472
count2(尾部有0数):249