如果我知道 x,搜索 x+y=x*y 结果的最有效方法是什么?
what is the most efficient way to search the result of x+y=x*y if I know x?
例如:
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);
}
}
}
}
但是程序有问题:
- 它只能搜索从-10到10的结果,因为在
Float.MIN_VALUE
和Float.MAX_VALUE
之间搜索太慢
- 我知道9+1.125=9*1.125,但即使我设置每次增量为0.0001,程序也找不到任何结果
- 有时程序会围绕真实结果打印多个结果
有没有其他更快的方法或更好的算法来找到结果?
代数上:
y = x / (x - 1)
这比尝试反复寻找答案要快得多。
如下所述,别忘了赶上x = 0
例如:
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);
}
}
}
}
但是程序有问题:
- 它只能搜索从-10到10的结果,因为在
Float.MIN_VALUE
和Float.MAX_VALUE
之间搜索太慢 - 我知道9+1.125=9*1.125,但即使我设置每次增量为0.0001,程序也找不到任何结果
- 有时程序会围绕真实结果打印多个结果
有没有其他更快的方法或更好的算法来找到结果?
代数上:
y = x / (x - 1)
这比尝试反复寻找答案要快得多。
如下所述,别忘了赶上x = 0