热门关键字:  ubuntu  分区  linux系统进程  函数  Fedora

当前位置 :| 主页>Linux教程>编程开发>PHP>

php实现大整数的加法运算

来源:06's博客 作者: 时间:2007-10-16 Tag: 点击:
 自己写的,有不足之处还请多多指教。。。


<html>
<head>
    <title>this is add page</title>
</head>
<center><h2>大整数的加法运算</h2></center>
<body bgcolor="#ff9498">
<hr>
<hr>
<?php
        //随机产生第一个大整数
    function create()
    {
        $len=rand(1,100);
        for($i=0;$i<$len-1;$i++)
        {
            $arr[]=rand(0,9);
        }
            $arr[$len-1]=rand(1,9);
        return($arr);
    }
        //格式化输出
    function output($arr)
    {
        $len=count($arr);
        //将数组翻转
        for($i=$len-1;$i>=0;$i--)
        {
            $arr_f[]=$arr[$i];
        }
        echo "<pre>";
        echo "大整数的位数是:$len";
        echo "<br>";
        if($len%5==0)
        {
            for($i=0;$i<$len;$i++)
            {
                //格式控制
                    echo "$arr_f[$i]";
                    $ii=$i+$k+1;
                    if($ii%5==0) echo " ";
                    if($ii%50==0) echo "<br>";
            }
            echo "<br>";
                echo "the arr1_f[0]is=$arr_f[0]";
            echo "<br>";
        }
        else
        {       
            {
                $k=(5-$len%5);
                for($i=0;$i<$k;$i++)
                echo " ";
            }
   
            for($i=0;$i<$len;$i++)
            {
                //格式控制
                echo "$arr_f[$i]";
                $ii=$i+$k+1;
                if($ii%5==0) echo " ";
                if($ii%50==0) echo "<br>";
            }
            echo "<br>";
            echo "the arr1_f[0]is=$arr_f[0]";
            echo "<br>";
            echo "</pre>";
        }
    }
    function add($arr1,$arr2)
    {
        //计算两个数的和
        $len1=count($arr1);
        $len2=count($arr2);
               
        if($len1>$len2)
        {
            $len_small=$len2;
            $len_big=$len1;
        }
        else
        {
            $len_small=$len1;   
            $len_big=$len2;
        }

        for($i=0;$i<$len_big;$i++)
        {
            if($i<$len_small)
                $arr_sum[]=$arr1[$i]+$arr2[$i];   
            else
            {
                if($len1>$len2)
                    $arr_sum[]=$arr1[$i];
                else
                    $arr_sum[]=$arr2[$i];
            }   
        }
    //将和格式化
        for($i=0;$i<=$len_small;$i++)
        {   
            while($arr_sum[$i]>9)
            {
                $arr_sum[$i]-=10;
                $arr_sum[$i+1]+=1;
            }
        }
        return($arr_sum);
    }
        $arr1=create();
        $arr2=create();
        $sum=add($arr1,$arr2);
        output($arr1);
        output($arr2);
        output($sum);
?>
</body>
</html>

最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表