Friday, February 27, 2009

multiply, power function with large number

function power($a,$b){
  if($b==1)return $a;
  return multiply($a,(power($a,$b-1)));
}
function multiply($a,$b){
  $a = ''.$a;
  $b = ''.$b;
  $b_length = strlen($b);
  $value = '';
  for($i=1;$i<=$b_length;$i++){
    $b2 = $b[$b_length-$i];
    $mul = $a*$b2+$temp;
    $temp = floor($mul/10);
    $value = ($mul%10).$value;
  }
  $value = $temp.$value;
  return $value;
}
with both $a and $b is string strlen($a) == 1

Tuesday, February 24, 2009

plus function for large number

function plus($a,$b){
  $b_length = strlen($b)+1;
  $a = sprintf("%0".$b_length."s",   $a);
  $b = '0'.$b;
  $a_length = strlen($a);
  $temp =0;
  for($i=0;$i<$a_length;$i++){
    $a1 = substr($a,-1,1);
    $b1 = substr($b,-1,1);
    $a = substr($a,0,-1);
    $b = substr($b,0,-1);
    $result = ($a1+$b1+$temp)%10;
    $ans = $result.$ans;
    $temp = floor(($a1+$b1+$temp)/10);
  }
  $ans = $b.$ans;
  return ltrim($ans,'0');
}
with both $a and $b if string and strlen($a) < strlen($a)