packagecn.zmx;publicclassMultiply{publicMultiply(){}publicMultiply(intx){this.setX(x);}privateintx=0;privateintlength=0;publicintgetX(){returnx;}publicvoidsetX(intx){this...
package cn.zmx;
public class Multiply {
public Multiply(){
}
public Multiply(int x) {
this.setX(x);
}
private int x = 0;
private int length=0;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x>0?x:-x;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public static void main(String[] args) {
Multiply m = new Multiply(10000);
System.out.println("运算开始...");
long startTime = System.currentTimeMillis();
byte[] des = m.calculate(new byte[1]);
for(int i=0;i
System.out.print(des[i]);
if((i+1)%50==0){
System.out.println();
}
m.setLength(m.getLength()+1);
}
long endTime = System.currentTimeMillis();
System.out.println("\n运算结束!\n共耗时:"+(endTime-startTime)/1000+"秒"+(endTime-startTime)%1000+"毫秒");
System.out.println("总长度为:"+m.getLength());
}
public String showResult(){
Multiply m = new Multiply(this.getX());
String result="";
long startTime = System.currentTimeMillis();
byte[] des = m.calculate(new byte[1]);
for(int i=0;i
result += des[i];
m.setLength(m.getLength()+1);
}
long endTime = System.currentTimeMillis();
return result+","+m.getLength()+","+(endTime-startTime)/1000;
}
public byte[] calculate(byte[] des) {
des[0] = 1;
for (int i = 0; i
des = ArrayMultiply(des,tobyteArray(i+1, 0, new byte[1]),new byte[1]);
}
return des;
}
public byte[] calculate(int x,byte[] des) {
des = tobyteArray(x, 0, new byte[1]);
return des;
}
public byte[] ArrayMultiply(byte[] b,int x,byte[] result,int offset){
int carrier = 0;
byte[] bt = (byte[])b.clone();
for(int i=bt.length-1;i>=0;i--){
bt[i] *= x;
int temp = carrier;
carrier = (bt[i]+carrier)/10;
bt[i] = (byte) ((bt[i]+temp)%10);
if(i-1<0&&carrier>0){
result = new byte[bt.length+1];
System.arraycopy(bt,0,result,1,bt.length);
result[0] = (byte) carrier;
if(offset>0){
byte[] bb = shiftArray(offset,result);
return bb;
}
return result;
}
}
if(offset>0){
byte[] bb = shiftArray(offset, bt);
return bb;
}
return bt;
}
private byte[] shiftArray(int offset, byte[] bt) {
byte[] bb = new byte[bt.length+offset];
System.arraycopy(bt,0,bb,0,bt.length);
return bb;
}
// 因为字数限制有些没发出来
}
展开