找出 2 个数字加到某物上并乘以某物

新手上路,请多包涵

嘿,所以我正在制作一个因式分解程序,我想知道是否有人可以给我任何关于有效方法的想法,以找到两个数字与指定数字的倍数,并添加到指定的数字。

例如我可能有

(a)(b) = 6

a + b = 5

所以基本上我只需要一种方法来找到 a 和 b 值。在这种情况下,它们将是 2 和 3。

谁能给我任何关于从哪里开始的想法?还必须考虑使用负数。

原文由 Belgin Fish 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 578
2 个回答

不需要循环,只需使用简单的数学来求解这个方程组:

a*b = 我;

a+b = j;

a = j/b;

a = ib;

j/b = ib;所以:

b + j/b + i = 0

b^2 + i*b + j = 0

从这里,它是一个二次方程,找到 b (只需实现 二次方程公式)并从那里得到 a 的值是微不足道

你去:

 function finder($add,$product)
{

 $inside_root = $add*$add - 4*$product;

 if($inside_root >=0)
 {

     $b = ($add + sqrt($inside_root))/2;
     $a = $add - $b;

     echo "$a+$b = $add and $a*$b=$product\n";

 }else
 {
   echo "No real solution\n";
 }
}

真人实景:

http://codepad.org/JBxMgHBd

原文由 danii 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于乘法,我建议使用模运算符 (%) 来确定哪些数字均分到目标数字中,例如:

 $factors = array();
for($i = 0; $i < $target; $i++){
    if($target % $i == 0){
        $temp = array()
        $a = $i;
        $b = $target / $i;
        $temp["a"] = $a;
        $temp["b"] = $b;
        $temp["index"] = $i;
        array_push($factors, $temp);
    }
}

这将为您留下一系列目标数字的因素。

原文由 Brendon Dugan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题