求解方程。计数(x,y)

时间:2011-06-03 08:56:48

标签: c++ c math equation-solving

我的数学有问题:

假设我们有一个函数:F(x,y)= P;我的问题是:为这个函数计算合适的(x,y)图的最有效方法是什么?这意味着我自己不需要坐标,但我需要数字。 P在以下范围内:[0; 10 ^ 14]。 “x”和“y”是整数。它是使用强力解决还是有一些高级技巧(数学/编程语言(C,C ++))来解决这个问题的速度足够快?

更具体地说,函数是:x * y - ((x + y)/ 2)+ 1.

2 个答案:

答案 0 :(得分:10)

x*y - ((x+y)/2) + 1 == P相当于(2x-1)(2y-1) == (4P-3)

所以,你基本上在寻找4P-3的分解数量。如何用C或C ++计算数字可能是一个不同的问题,但每个因子分解产生原始方程的解。 [编辑:实际上是两个解决方案,因为如果A*B == C当然还有(-A)*(-B) == C也是如此。

就编程语言C和C ++而言,只需确保使用足以包含4 * 10^14的类型。 int不会这样做,所以请尝试long long

答案 1 :(得分:2)

你有一个双参数函数,想要为给定的常量求解它。

这是一个相当大的数学领域,可能有很多算法可以解决你的方程。许多人使用的一个关键想法是,如果你找到一个点F<P然后点F>P,那么某处在这两点之间,F必须等于P.

找到根(或零,你当然可以通过取F'= F-P转换为)的最基本算法之一是Newton's method。我建议你从这开始,阅读更高级的算法。这是一个非常大的研究领域,阅读愉快!

维基百科有一个root-finding algorithms列表,您可以将其作为起点。