php 相乘,大整数相乘法

跳至<?php

/**

* 大整数想乘

*/

//数字1

$n1 = "8274918237591826391827591827391827";

//数字2

$n2 = "0000000000129837293586928391837492837592837491873498216359187234986239487";

//九九乘法表

$muti = array();

for ($i = 0; $i < 10; $i++) {

for ($j = 0; $j < 10; $j++) {

$muti[strval($i)][strval($j)] = $i * $j;

}

}

//最长长度

$len_1 = strlen($n1);

//最短长度

$len_2 = strlen($n2);

//结果长度

$len_r = $len_1+$len_2+1;

//运算结果

$result = array_fill(0, $len_r, 0);

//数字反序

$n1 = strrev($n1);

$n2 = strrev($n2);

//按位运算

for ($i = 0; $i < $len_1; $i++) {

for ($j = 0; $j < $len_2; $j++) {

$result[$i + $j] += $muti[$n1[$i]][$n2[$j]];

}

}

//进位处理

$i = 0;

$j = $len_r-1;

do{

$result[$i + 1] += (int) ($result[$i] / 10);

$result[$i] = $result[$i] % 10;

} while (++$i

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值