如果我知道x,搜索x + y = x * y结果的最有效方法是什么?

时间:2015-07-06 01:59:23

标签: algorithm math language-agnostic

例如:

6+1.2=6*1.2
5+1.25=5*1.25

我想尝试编写一个程序来搜索结果,如搜索素数:

public class Test{
    public static void main(String[] args){
        float x=-1.0f;
        float d=0.0001f;
        for(float y=-10;y<10;y=y+d){
            if(x+y-x*y>=-d && x+y-x*y<=d){
                System.out.println(y);
            }
        }
    }
}

但程序有一些问题:

  1. 它只能在-10到10之间搜索结果,因为Float.MIN_VALUEFloat.MAX_VALUE之间的搜索太慢了
  2. 我知道9 + 1.125 = 9 * 1.125,但即使我设置每个增量为0.0001,程序也找不到任何结果
  3. 有时程序会在实际结果周围打印多个结果
  4. 还有其他更快的方法或更好的算法来查找结果吗?

1 个答案:

答案 0 :(得分:5)

代数:

y = x / (x - 1)

这比尝试迭代你的答案要快得多。

如下所述,请勿忘记抓住x = 0