Advertisement
apexsquirt

[PHP-CLI] Big numbers addition

Jul 12th, 2018
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. <?php
  2. function add_Z($x,$y) {
  3. $a = min($x,$y);
  4. $b = max($x,$y);
  5. $x = strval($a);
  6. $y = strval($b);
  7. $r = 0;
  8. if (strlen($x) < strlen($y)) {
  9. $t = strlen($y)-strlen($x);
  10. for ($i = 0; $i < strlen(max($x,$y)); $i++) {
  11. if (!is_numeric($x[$i])) { $x[$i] = 0; }
  12. if (!is_numeric($y[$i])) { $y[$i] = 0; }
  13. }
  14. for ($i = 0; $i < strlen(max($x,$y)) - $t; $i++) {
  15. $zz[$t+$i] = $x[$i];
  16. }
  17. for ($i = 0; $i < $t; $i++) {
  18. $zz[$i] = 0;
  19. }
  20. for ($i = strlen($y) - 1; $i >= 0; $i--) {
  21. $p = strval($zz[$i]+$y[$i]+$r);
  22. $ld[$i] = $p[strlen($p)-1];
  23. $r = floor(($zz[$i]+$y[$i]+$r)/10);
  24. }
  25. $ld[-1] = $r;
  26. if ($ld[-1] > 0) {
  27. for ($i = -1; $i < count($ld); $i++) {
  28. $str .= $ld[$i];
  29. }
  30. } else {
  31. for ($i = 0; $i < count($ld); $i++) {
  32. $str .= $ld[$i];
  33. }
  34. }
  35. } elseif (strlen($x) == strlen($y) && strlen($x) > 1) {
  36. $t = strlen($y)-strlen($x);
  37. for ($i = 0; $i < strlen(max($x,$y)); $i++) {
  38. if (!is_numeric($x[$i])) { $x[$i] = 0; }
  39. if (!is_numeric($y[$i])) { $y[$i] = 0; }
  40. }
  41. for ($i = strlen($y) - 1; $i >= 0; $i--) {
  42. $p = strval($x[$i]+$y[$i]+$r);
  43. $ld[$i] = $p[strlen($p)-1];
  44. $r = floor(($x[$i]+$y[$i]+$r)/10);
  45. }
  46. $ld[-1] = $r;
  47. if ($ld[-1] > 0) {
  48. for ($i = -1; $i < count($ld); $i++) {
  49. $str .= $ld[$i];
  50. }
  51. } else {
  52. for ($i = 0; $i < count($ld); $i++) {
  53. $str .= $ld[$i];
  54. }
  55. }
  56. } else {
  57. $str = $x + $y;
  58. }
  59. return $str;
  60. }
  61. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement