PHP模运算生成函数的逆函数实现技术求助
实现模乘法函数的逆函数
你的原函数是模乘法运算:
$result = ($number * 683567) % 1000000;
要实现逆函数,核心是找到683567在模1000000下的乘法逆元——即一个整数$inv,满足 (683567 * $inv) % 1000000 = 1。
由于683567和1000000互质(最大公约数为1),逆元存在。通过扩展欧几里得算法可计算出这个逆元是317933。
逆函数的逻辑很简单:用输入的结果值乘以逆元,再取模1000000,就能得到原始输入值。
PHP实现代码
function getOriginalNumber($result) { $modulus = 1000000; $multiplierInv = 317933; // 683567在模1000000下的逆元 return ($result * $multiplierInv) % $modulus; }
验证示例
// 测试用例1 echo getOriginalNumber(683567); // 输出: 1 // 测试用例2 echo getOriginalNumber(367134); // 输出: 2 // 测试用例3 echo getOriginalNumber(78741); // 输出: 123
内容的提问来源于stack exchange,提问作者Deniz Şafak
相关产品推荐
相关产品推荐

