fork download
  1. <?
  2. function findRestWithD($a, $b){
  3. if($a % $b==1){
  4. return "No NOD";
  5. } elseif ($a%$b!=0){
  6. echo "<tr><td>";
  7. var_dump($a);
  8. echo "</td><td>";
  9. var_dump($b);
  10. echo "</td></tr>";
  11. return findRestWithD($b, $a % $b);
  12. } else {
  13. return $b;
  14. }
  15. }
  16.  
  17. function findRestWithoutD($a, $b){
  18. if(insteadD($a, $b)==1){
  19. return "No NOD";
  20. }elseif(insteadD($a, $b)!=0){
  21. echo "<tr><td>";
  22. var_dump($a);
  23. echo "</td><td>";
  24. var_dump($b);
  25. echo "</td></tr>";
  26. return findRestWithoutD($b, insteadD($a, $b));
  27. } else{
  28. return $b;
  29. }
  30. }
  31.  
  32. function findRestWithGMP($a, $b){
  33. $r=gmp_mod($a, $b);
  34. if(gmp_cmp($r,1)==0){
  35. return "No NOD";
  36. } elseif (gmp_cmp($r,0)!=0){
  37. echo "<tr><td>";
  38. echo gmp_strval($a);
  39. echo "</td><td>";
  40. echo gmp_strval($b);
  41. echo "</td></tr>";
  42. return findRestWithGMP($b, $r);
  43. } else {
  44. return $b;
  45. }
  46. }
  47.  
  48. function insteadD($a, $b){
  49. if( ($a - $b)>$b ){
  50. return insteadD(($a - $b), $b);
  51. }else{
  52. return $a - $b;
  53. }
  54. }
  55. $a = 25234234232346;
  56. $b = 12342342322;
  57. //$a=567890352;
  58. //$b=46688;
  59. echo "<table width=100%><tr valign=top><td width=33%>";
  60. echo "<table width=*>";
  61. $start = microtime(true);
  62. echo findRestWithD($a, $b);
  63. echo "</table>";
  64. echo "\n".'Время: '.(microtime(true) - $start).' сек.';
  65. echo "</td><td width=*><table width=*>";
  66. $a1=gmp_init("25234234232346");
  67. $b1=gmp_init("12342342322");
  68. $start = microtime(true);
  69. echo gmp_strval(findRestWithGMP($a1, $b1));
  70. echo "</table>";
  71. echo "\n".'Время: '.(microtime(true) - $start).' сек.';
  72.  
  73. echo "</td><td><table>";
  74.  
  75. $start = microtime(true);
  76. echo findRestWithoutD($a, $b);
  77. echo "</table>";
  78. echo "\n".'Время: '.(microtime(true) - $start).' сек.';
  79.  
  80. echo "</td></tr></table>";
  81. ?>
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
<table width=100%><tr valign=top><td width=33%><table width=*><tr><td>float(25234234232346)
</td><td>float(12342342322)
</td></tr><tr><td>float(12342342322)
</td><td>int(216249214)
</td></tr><tr><td>int(216249214)
</td><td>int(-110061138)
</td></tr><tr><td>int(-110061138)
</td><td>int(106188076)
</td></tr><tr><td>int(106188076)
</td><td>int(-3873062)
</td></tr><tr><td>int(-3873062)
</td><td>int(1615402)
</td></tr><tr><td>int(1615402)
</td><td>int(-642258)
</td></tr><tr><td>int(-642258)
</td><td>int(330886)
</td></tr><tr><td>int(330886)
</td><td>int(-311372)
</td></tr><tr><td>int(-311372)
</td><td>int(19514)
</td></tr><tr><td>int(19514)
</td><td>int(-18662)
</td></tr><tr><td>int(-18662)
</td><td>int(852)
</td></tr><tr><td>int(852)
</td><td>int(-770)
</td></tr><tr><td>int(-770)
</td><td>int(82)
</td></tr><tr><td>int(82)
</td><td>int(-32)
</td></tr><tr><td>int(-32)
</td><td>int(18)
</td></tr><tr><td>int(18)
</td><td>int(-14)
</td></tr><tr><td>int(-14)
</td><td>int(4)
</td></tr>-2</table>
Время: 0.00086784362792969 сек.</td><td width=*><table width=*><tr><td>25234234232346</td><td>12342342322</td></tr><tr><td>12342342322</td><td>6486526178</td></tr><tr><td>6486526178</td><td>5855816144</td></tr><tr><td>5855816144</td><td>630710034</td></tr><tr><td>630710034</td><td>179425838</td></tr><tr><td>179425838</td><td>92432520</td></tr><tr><td>92432520</td><td>86993318</td></tr><tr><td>86993318</td><td>5439202</td></tr><tr><td>5439202</td><td>5405288</td></tr><tr><td>5405288</td><td>33914</td></tr><tr><td>33914</td><td>12962</td></tr><tr><td>12962</td><td>7990</td></tr><tr><td>7990</td><td>4972</td></tr><tr><td>4972</td><td>3018</td></tr><tr><td>3018</td><td>1954</td></tr><tr><td>1954</td><td>1064</td></tr><tr><td>1064</td><td>890</td></tr><tr><td>890</td><td>174</td></tr><tr><td>174</td><td>20</td></tr><tr><td>20</td><td>14</td></tr><tr><td>14</td><td>6</td></tr>2</table>
Время: 0.0010910034179688 сек.</td><td><table><tr><td>float(25234234232346)
</td><td>float(12342342322)
</td></tr><tr><td>float(12342342322)
</td><td>float(6486526178)
</td></tr><tr><td>float(6486526178)
</td><td>float(5855816144)
</td></tr><tr><td>float(5855816144)
</td><td>float(630710034)
</td></tr><tr><td>float(630710034)
</td><td>float(179425838)
</td></tr><tr><td>float(179425838)
</td><td>float(92432520)
</td></tr><tr><td>float(92432520)
</td><td>float(86993318)
</td></tr><tr><td>float(86993318)
</td><td>float(5439202)
</td></tr><tr><td>float(5439202)
</td><td>float(5405288)
</td></tr><tr><td>float(5405288)
</td><td>float(33914)
</td></tr><tr><td>float(33914)
</td><td>float(12962)
</td></tr><tr><td>float(12962)
</td><td>float(7990)
</td></tr><tr><td>float(7990)
</td><td>float(4972)
</td></tr><tr><td>float(4972)
</td><td>float(3018)
</td></tr><tr><td>float(3018)
</td><td>float(1954)
</td></tr><tr><td>float(1954)
</td><td>float(1064)
</td></tr><tr><td>float(1064)
</td><td>float(890)
</td></tr><tr><td>float(890)
</td><td>float(174)
</td></tr><tr><td>float(174)
</td><td>float(20)
</td></tr><tr><td>float(20)
</td><td>float(14)
</td></tr><tr><td>float(14)
</td><td>float(6)
</td></tr><tr><td>float(6)
</td><td>float(2)
</td></tr>2</table>
Время: 0.0043418407440186 сек.</td></tr></table>