예제 #1
0
 private static function pidigits($n)
 {
     //$n = (int) $argv[1];
     $i = 0;
     $pidigit = array(array(1, 0, 0, 1), array(0, 0, 0, 0));
     while ($n) {
         if ($n < 10) {
             printf("%s%s\t:%d\n", Pidigit_Next($pidigit, $n), str_repeat(' ', 10 - $n), $i + $n);
             break;
         } else {
             printf("%s\t:%d\n", Pidigit_Next($pidigit, 10), $i += 10);
         }
         $n -= 10;
     }
 }
예제 #2
0
    $tr[2] = 0;
    return $tr;
}
function Pidigit_Next(&$pd, $times)
{
    $digits = '';
    $z = $pd[0];
    do {
        $y = Transformation_Extract($z, 3);
        do {
            $z = Transformation_Compose($z, Transformation_Next($pd[1]));
            $y = Transformation_Extract($z, 3);
        } while (0 != gmp_cmp(Transformation_Extract($z, 4), $y));
        $z = Transformation_Compose2($y, $z);
        $digits .= gmp_strval($y);
    } while (--$times);
    $pd[0] = $z;
    return $digits;
}
$n = (int) $argv[1];
$i = 0;
$pidigit = array(array(1, 0, 0, 1), array(0, 0, 0, 0));
while ($n) {
    if ($n < 10) {
        printf("%s%s\t:%d\n", Pidigit_Next($pidigit, $n), str_repeat(' ', 10 - $n), $i + $n);
        break;
    } else {
        printf("%s\t:%d\n", Pidigit_Next($pidigit, 10), $i += 10);
    }
    $n -= 10;
}