1

I have very large numbers (million digits).

number = A*10^partlen + B

As of now, I split the numbers by this way:

 TotalLen = IntegerLength[a]; 
 partlen = IntegerPart[TotalLen/2];
 Print[First[Timing[A = IntegerPart[number/(10^partlen )]]]];
 Print[First[Timing[B = Mod[number, 10^partlen ]]]]

And the timings for a 6 million digits number are:

4.703

0.36

Converting the number to strings and rebuilding the parts is even slower than this.

Is there any faster way?

Mohsen Afshin
  • 985
  • 1
  • 5
  • 17

1 Answers1

2

Per J.M. suggestion, I've got a ten fold increase in speed:

TotalLen = IntegerLength[a]; 

RightLen = Quotient[TotalLen, 2]; 

Print[First[Timing[{A, B} = QuotientRemainder[a, (10^RightLen)]]]];

Timing:

0.344

Although the time decreased but it is yet so large just for pre-processing.

Mohsen Afshin
  • 985
  • 1
  • 5
  • 17