怎麼將100位元以內的10進制整數加法函數,輸入參數為兩個整數的字串,返回值是他們相加的和-PHP中文網問答-怎麼將100位以內的10進制整數加法函數,輸入參數為兩個整數的字串,返回值是他們相加的和-PHP中文網問答
圍觀一下哦,學習一下。
<?php//生成两个大数$n1='';$n2='';$n1_length=mt_rand(1,15); //这里是位数限制,想验算就限制在10到15位然后拿计算器敲下看吧,要写成100毫无问题只是不方便验算$n2_length=mt_rand(1,15);for($i=0;$i<$n1_length;$i++){$n1=$n1.mt_rand(1,9);}for($i=0;$i<$n2_length;$i++){$n2=$n2.mt_rand(1,9);}//求出字符串长度先$l1=strlen($n1);$l2=strlen($n2);$l=max($l1,$l2);//翻转两个数$n1_rev=strrev($n1);$n2_rev=strrev($n2);//短的填充0$n1_rev=$l1>$l2?$n1_rev:str_pad($n1_rev,$l,'0');$n2_rev=$l2>$l1?$n2_rev:str_pad($n2_rev,$l,'0');//相同位相加的进位$other=0;//两数之和$n3='';//从个位向上依次相加for($j=0;$j<$l;$j++){//相同位相加加进位的和$sum=intval( $n1_rev{$j}+$n2_rev{$j}+$other);$other=intval($sum/10);$n3=$n3.($sum%10);}echo $n1.'<br/>';echo '+'.'<br/>';echo $n2.'<br/>';echo '='.'<br/>';echo strrev($n3);?>
怎麼將100位元以內的10進制整數加法函數,輸入參數為兩個整數的字串,返回值是他們相加的和-PHP中文網問答-怎麼將100位以內的10進制整數加法函數,輸入參數為兩個整數的字串,返回值是他們相加的和-PHP中文網問答
圍觀一下哦,學習一下。
<?php
//生成两个大数
$n1='';$n2='';
$n1_length=mt_rand(1,15); //这里是位数限制,想验算就限制在10到15位然后拿计算器敲下看吧,要写成100毫无问题只是不方便验算
$n2_length=mt_rand(1,15);
for($i=0;$i<$n1_length;$i++){
$n1=$n1.mt_rand(1,9);
}
for($i=0;$i<$n2_length;$i++){
$n2=$n2.mt_rand(1,9);
}
//求出字符串长度先
$l1=strlen($n1);
$l2=strlen($n2);
$l=max($l1,$l2);
//翻转两个数
$n1_rev=strrev($n1);
$n2_rev=strrev($n2);
//短的填充0
$n1_rev=$l1>$l2?$n1_rev:str_pad($n1_rev,$l,'0');
$n2_rev=$l2>$l1?$n2_rev:str_pad($n2_rev,$l,'0');
//相同位相加的进位
$other=0;
//两数之和
$n3='';
//从个位向上依次相加
for($j=0;$j<$l;$j++){
//相同位相加加进位的和
$sum=intval( $n1_rev{$j}+$n2_rev{$j}+$other);
$other=intval($sum/10);
$n3=$n3.($sum%10);
}
echo $n1.'<br/>';
echo '+'.'<br/>';
echo $n2.'<br/>';
echo '='.'<br/>';
echo strrev($n3);
?>