大数乘法_加法
1 public class 大数乘法_加法 { 2 //**************************大数乘法;加法 ********************************* 3 static String zero(int n) { 4 if(n==0)return ""; 5 if(n==1)return "0"; 6 return zero(n/2)+zero(n/2)+zero(n%2); 7 } 8 //*********************大数加法运算********************** 9 static String add(String a,String b) { 10 if(a.length()<=8 && b.length()<=8) //出口 11 return Integer.parseInt(a)+Integer.parseInt(b)+""; 12 13 String a1="0"; 14 String a2=a; 15 if(a.length()>8) { 16 a1=a.substring(0, a.length()-8); 17 a2=a.substring(a.length()-8); 18 } 19 String b1="0"; 20 String b2=b; 21 if(b.length()>8) { 22 b1=b.substring(0, b.length()-8); 23 b2=b.substring(b.length()-8); 24 } 25 String t=add(a2,b2); 26 while(t.length()<8)t="0"+t; 27 if(t.length()>8) 28 return add(add(a1,b1),"1")+t.substring(1); 29 30 return add(a1,b1)+t; 31 } 32 static String multi(String a,String b) { //乘法运算 33 if(a.length()<=4&&b.length()<=4) 34 return Integer.parseInt( a)*Integer.parseInt(b)+""; 35 if(a.length()>4) { 36 int k=a.length()/2; 37 String a1=a.substring(0,k); 38 String a2=a.substring(k); 39 return add(multi(a1,b)+zero(a2.length()),multi(a2,b)); 40 } 41 return multi(b,a); 42 } 43 44 public static void main(String[] args) { 45 System.out.println(multi("123456789","987654321")); 46 47 } 48 49 }
人生苦短,及时行乐