Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5544829
  • 博文数量: 763
  • 博客积分: 12108
  • 博客等级: 上将
  • 技术积分: 15717
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-28 21:21
个人简介

业精于勤,荒于嬉

文章分类

全部博文(763)

文章存档

2018年(6)

2017年(15)

2016年(2)

2015年(31)

2014年(14)

2013年(87)

2012年(75)

2011年(94)

2010年(190)

2009年(38)

2008年(183)

2007年(28)

分类:

2007-10-11 21:33:51

自己写的,有不足之处还请多多指教。。。




    this is add page

大整数的加法运算







        //随机产生第一个大整数
    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 "
";
        echo "大整数的位数是:$len";
        echo "
";
        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 "
";
            }
            echo "
";
                echo "the arr1_f[0]is=$arr_f[0]";
            echo "
";
        }
        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 "
";
            }
            echo "
";
            echo "the arr1_f[0]is=$arr_f[0]";
            echo "
";
            echo "
";
        }
    }
    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);
?>



阅读(3904) | 评论(2) | 转发(0) |
0

上一篇:大整数的加法运算---php

下一篇:live

给主人留下些什么吧!~~