大数乘法_加法

 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 }

 

posted @ 2020-03-04 19:17  浪~子  阅读(153)  评论(0编辑  收藏  举报