1000的阶乘,1.求出所有零的个数 2.求出尾部零的个数
package demo;
import java.math.BigInteger;
/*
* 求出1000阶乘所有零和尾部零的个数
*/
public class Demo2 {
public static void main(String[] args) {
test();
test2();
}
/*
* 求出1000的阶乘中尾部所有零的个数
*/
private static void test2() {
BigInteger b1 = new BigInteger("1");
for (int i = 1; i <= 1000; i++) {
BigInteger bi2 = new BigInteger(i + "");
b1 = b1.multiply(bi2); // 将b1和bi2相乘的结果赋值给b1
}
System.out.println(b1);
String str = b1.toString(); //获取到b1的字符串表现形式
StringBuilder sb = new StringBuilder(str);
str = sb.reverse().toString(); //链时编程
int count = 0;
for(int i = 0;i<str.length();i++) {
if('0'!= str.charAt(i)) {
break;
}else {
count++;
}
}
System.out.println(count);
}
/*
* 1000的阶乘所有的0的个数
*/
private static void test() {
BigInteger b1 = new BigInteger("1");
for (int i = 1; i <= 1000; i++) {
BigInteger bi2 = new BigInteger(i + "");
b1 = b1.multiply(bi2); // 将b1和bi2相乘的结果赋值给b1
}
System.out.println(b1);
String str = b1.toString(); //获取到b1的字符串表现形式
int count = 0;
for(int i =0;i<str.length();i++) {
if('0'==str.charAt(i)){
count++;
}
}
System.out.println(count);
}
}