1. 程式人生 > >AJPFX:不用遞歸巧妙求出1000的階乘所有零和尾部零的個數

AJPFX:不用遞歸巧妙求出1000的階乘所有零和尾部零的個數

args void nbsp main () demo1 獲取字符串 result int

package com.jonkey.test;

import java.math.BigInteger;

public class Test6 {

/**
* @param args
* 需求:求出1000的階乘所有零和尾部零的個數,不用遞歸做
*/
public static void main(String[] args) {
/*int result = 1;
for(int i = 1; i <= 1000; i++) {
result = result * i;
}

System.out.println(result); //因為1000的階乘遠遠超出了int的取值範圍
*/
//demo1();
demo2();
}

public static void demo2() { //獲取1000的階乘尾部有多少個零

BigInteger bi1 = new BigInteger("1");
for(int i = 1; i <= 1000; i++) {
BigInteger bi2 = new BigInteger(i+"");
bi1 = bi1.multiply(bi2); //將bi1與bi2相乘的結果賦值給bi1
}
String str = bi1.toString(); //獲取字符串表現形式
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);
}

public static void demo1() { //求1000的階乘中所有的零
BigInteger bi1 = new BigInteger("1");
for(int i = 1; i <= 1000; i++) {
BigInteger bi2 = new BigInteger(i+"");
bi1 = bi1.multiply(bi2); //將bi1與bi2相乘的結果賦值給bi1
}
String str = bi1.toString(); //獲取字符串表現形式
int count = 0;
for(int i = 0; i < str.length(); i++) {
if(‘0‘ == str.charAt(i)) { //如果字符串中出現了0字符
count++; //計數器加1
}
}
System.out.println(count);
}

}

String[] arr1 = new String[4];
arr1[0]="hong";
arr1[1]="hei";
arr1[2]="hua";
arr1[3]="p";

int[] arr2 = new int[13];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 13; j++) {
arr2[j] = j+1;

System.out.println(""+arr1[i]+arr2[j]);
}

AJPFX:不用遞歸巧妙求出1000的階乘所有零和尾部零的個數