php实现大整数加法

<html>
<head>
    <title>随机大整数的加法运算演示</title>
</head>
<body>


<font size = 20>
<?php
        //echo "<font size = 5>";
        echo "<font color = red>第一个大整数 :</font><br>";
        $largeint1 = createlargeint();
        echo "<font color = red>第二个大整数 :</font><br>";
        $largeint2 = createlargeint();
        addition($largeint1,$largeint2);


        function createlargeint(){
                $len = rand(1,100);
                echo "<hr> len(位数) = $len <br>";
                for($i=0;$i<$len-1;$i++){
                        $largeint[] = rand(0,9);
                }
                $largeint[$len-1] = rand(1,9); //最高位不能为0
                echo "大整数为 :<br>";
                showlargeint($largeint);
                echo "<hr>";
                return $largeint;
        }


        function addition($int1,$int2){
                $len1 = count($int1);
                $len2 = count($int2);


                $result = ($len1 > $len2) ? $int1 : $int2;


                /*
                if($len1 > $len2){
                        $result = $int1;
                }
                else{
                        $result = $int2;
                }
                */


                $tem = ($len1 > $len2)?$len2:$len1;


                for($i =0 ;$i < $tem;$i++){            //按位相加
                          $result[$i] = $int1[$i] +$int2[$i];
                }


                //处理进位
                for($i = 0; $i < count($result);$i++){
                        if($result[$i] > 9){
                                $result[$i+1] +=1;
                                $result[$i]-=10;
                        }
                }


                $length = count($result);
                echo "<hr> <font color = green>the length of result is :</font> $length <br> <font color = green>the result of addition is : </font><br>";


                showlargeint($result);
        }


        function showlargeint($largeint){
                echo "<br><pre>";


                $len = count($largeint);
                $blanknum = 5 - ($len%5);


                for($i =0; $i<$blanknum; $i++){
                        $largeint[$len+$i] = "&nbsp;";
                }
                $len = count($largeint);


                for($i = $len-1; $i>=0; $i--){
                        echo "$largeint[$i]";
                        if($i%5 == 0){
                                echo " ";
                                $k= $len - $i;
                                if($k%50 == 0 && $k != 0){
                                        echo "<br>";
                                }
                        }
                }


                echo "<br></pre>";
        }
        //echo "</font>";
?>
</font>
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值