大數相乘最直接的算法就是模擬小學學到的豎式乘法,可使用數組或者字符串來存儲乘數和被乘數,php代碼實現以下: php
<?php /** * 大數相乘代碼 */ function multiply($str1,$str2){ $str1len = count($str1); $str2len = count($str2); $str3 = array(); //初始化結果數組 for($i=0;$i<$str1len+$str2len;$i++){ $str3[$i]=0; } //計算交叉相乘的結果 for($i=0;$i<$str1len;$i++){ for($j=0;$j<$str2len;$j++){ $str3[$i+$j+1]+=$str1[$i]*$str2[$j]; } } //若是大於10,則進位 for($i=$str1len+$str2len-1;$i>=0;$i--){ if($str3[$i]>=10){ $str3[$i-1]+=intval($str3[$i]/10); $str3[$i]%=10; } } //去掉高位的0 $i=0; while($str3[$i]==0){ $i++; } $str4 = array(); //複製到新的數組 for($j=0;$i<$str1len+$str2len;$i++,$j++){ $str4[$j]=$str3[$i]; } //輸出 foreach($str4 as $tmp){ echo $tmp; } } function main(){ $a = array(1,2,3); $b = array(1,2,3); multiply($a,$b); } main(); ?>