自己写的,有不足之处还请多多指教。。。
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) |