找出2个数字添加到某个东西并乘以某个东西

时间:2012-03-07 15:54:06

标签: php numbers factoring

嘿所以我正在制作一个保理程序,我想知道是否有人能以有效的方式给我任何想法,找到两个数字到指定数字的倍数,并且还添加到指定的数字。

例如我可能有

(a)(b)= 6

a + b = 5

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

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

4 个答案:

答案 0 :(得分:8)

来吧伙计们,没有必要循环,只需使用简单的数学来解决这个方程式系统:

a * b = i;

a + b = j;

a = j / b;

a = i-b;

j / b = i-b;这样:

b + j / b + i = 0

b ^ 2 + i * b + j = 0

从这里,它是一个二次方程式,找到 b (只需实现quadratic equation formula)并从那里得到 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

答案 1 :(得分:3)

我将如何做到这一点:

$sum = 5;
$product = 6;

$found = FALSE;
for ($a = 1; $a < $sum; $a++) {
  $b = $sum - $a;
  if ($a * $b == $product) {
    $found = TRUE;
    break;
  }
}

if ($found) {
  echo "The answer is a = $a, b = $b.";
} else {
  echo "There is no answer where a and b are both integers.";
}

基本上,从$a = 1$b = $sum - $a开始,一步一步地完成,因为我们知道$a + $b == $sum始终为真,并且$a和{{ 1}}看看它们是否相等$b。如果他们这样做,那就是答案。

See it working

这是否是最有效的方法是非常值得商榷的。

答案 2 :(得分:2)

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

$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);
    }
}

这会给你留下一系列目标数量的因素。

答案 3 :(得分:1)

这基本上是一组2 simultaneous equations

x*y = a
X+y = b

(使用x和y的数学约定求解变量,a和b求任意常量)。

但解决方案涉及二次方程式(因为x * y),因此根据a和b的实际值,可能没有解决方案,或者可能存在多个解决方案。