Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: CICOLO_111234 en 9 Agosto 2010, 19:18 pm



Título: Calcular decimales de Pi en PHP
Publicado por: CICOLO_111234 en 9 Agosto 2010, 19:18 pm
Hola:

He creado un programa para calcular decimales de Pi en PHP.
Utiliza el método de Ramanujan.
Éste es el código:



Código
  1. <?
  2. ini_set("max_execution_time", "0");
  3. $decimales = '10000';
  4. $n = "0";
  5. $sumatoria = "0";
  6.  
  7. function factorial ($num) {
  8.  
  9. // inicializamos la variable
  10. $factorial = 1;
  11. // calculamos el  factorial
  12. // multiplicando el numero por todos
  13. // los numeros entre el y 1
  14. // Salida: "El factorial de 5 es 120"
  15. for ($x=$num; $x>=1; $x--) {
  16.  $factorial = bcmul($factorial, $x);
  17. }
  18.  
  19. return $factorial;
  20.  
  21. }
  22.  
  23.  
  24.  
  25.  
  26. While ($n < $_GET['n']) {
  27.  
  28. $raiz =  bcsqrt('2', $decimales);
  29. $mult1 = bcmul('2', $raiz, $decimales);
  30. $primera = bcdiv($mult1, '9801', $decimales);
  31. $mult2 = bcmul(factorial(4*$n), bcadd('1103', bcmul('26390', $n, $decimales), $decimales), $decimales);
  32. $mult22 = bcmul(factorial($n), factorial($n), $decimales);
  33. $mult22 = bcmul($mult22, $mult22, $decimales);
  34.  
  35. $exponente = 4*$n;
  36. $numero = 396;
  37.    $numeroo = 1;
  38.    for ($i=0; $i<$exponente; $i++)
  39.    {
  40.        $numeroo = bcmul($numeroo, $numero, $decimales);
  41.    }
  42.  
  43.  
  44. $mult3 = bcmul($mult22, $numeroo, $decimales);
  45. $div = bcdiv($mult2, $mult3, $decimales);
  46. $sumatoria = bcadd($sumatoria, $div, $decimales);
  47.  
  48. #$sumatoria = $sumatoria + ((factorial(4*$n))*(1103+26390*$n))/(potencia (factorial($n), 4)*potencia (396, 4*$n));
  49. $sum2 = bcmul($sumatoria, $primera, $decimales);
  50. $sum3 = bcdiv('1', $sum2, $decimales);
  51. $fp = fopen('pi.txt', "w");
  52. $write = fputs($fp, $sum3);
  53. fclose($fp);
  54.  
  55.  
  56. $n=$n+1;
  57.  
  58. if ($n % 20 == 0)
  59. {
  60.  
  61. sleep (1);
  62. }
  63. }
  64. echo $sum3;
  65.  
  66.  
  67. ?>



Hay que crear un archivo llamado "pi.txt". Luego hay que subirlo a tu página y entrar en www.tupagina.com/pagina.php?n=XXXX. Cuanto mayor sea XXXX más decimales correctos de Pi habrá. En la tercera línea del código podeis cambiar el número de decimales de Pi que querais que se enseñe. Eso sí, cuanto mayor sea ese número más tardará en hacer el cálculo.

Con este programa he logrado calcular 8.000 decimales de Pi, y ahora mismo está trabajando para conseguir más. Ya sé que está lejos del recién batido récord (5 billones de decimales), pero algo es algo  :D