Algorithm 求1/X+1/Y=1/N的可能解的个数,给出N
方程为:1/X+1/Y=1/N 其中X,Y和N为正整数 我必须找到可能的解的个数,即X和Y对的值,它将解上述方程,因为N是已知的 很明显,对于任何解X>N和Y>N,我可以假设X=N+a和Y=N+b 所以方程简化为1/N+a+1/N+b=1/N 如果我们求解它,它会减少到N^2=ab。 它可以写成 当a=1时,b=N^2 当a=2b=N^2/2时,依此类推。 所以a的值在[1,N]的范围内,b的值在[N^2,N]的范围内。但是X和Y是正整数。因此a和b也是整数 所以我必须考虑a和b的值对,它们都是整数 尝试给出一种算法方法。是的,试着给出一个优化的方法来解决这类方程。方程Algorithm 求1/X+1/Y=1/N的可能解的个数,给出N,algorithm,equation,Algorithm,Equation,方程为:1/X+1/Y=1/N 其中X,Y和N为正整数 我必须找到可能的解的个数,即X和Y对的值,它将解上述方程,因为N是已知的 很明显,对于任何解X>N和Y>N,我可以假设X=N+a和Y=N+b 所以方程简化为1/N+a+1/N+b=1/N 如果我们求解它,它会减少到N^2=ab。 它可以写成 当a=1时,b=N^2 当a=2b=N^2/2时,依此类推。 所以a的值在[1,N]的范围内,b的值在[N^2,N]的范围内。但是X和Y是正整数。因此a和b也是整数 所以我必须考虑a和b的值对,它们都是
1/X + 1/Y = 1/N
可以重新安排到
(Y+X)/(XY) = 1/N
通过将右侧延伸到公共分母。所得方程等价于
(XY)/(X+Y) = N
这可能更适合用整数进行计算。以下是几个观察结果: 1/X+1/Y=1/N等于X-NY-N=N^2 如果N的素因式分解是N=p1^i1*p2^i2*..*pk^ik,那么答案是2*i1+12*i2+1…2*ik+1,您可以使用 您可以在OsqrtN*logN中计算此值 以下是如何进行Java分解:
package stackoverflow;
import java.util.ArrayList;
import java.util.List;
public class Factorization {
public static class Pair {
long x, y;
public Pair(long x, long y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return String.format("[%d, %d]", x, y);
}
}
public static List<Pair> factorize(long n) {
List<Pair> ans = new ArrayList<Pair>();
for (long i = 2; i * i <= n; ++i) {
int t = 0;
while (n % i == 0) {
n /= i;
t++;
}
if (t > 0)
ans.add(new Pair(i, t));
}
if (n > 1)
ans.add(new Pair(n, 1));
return ans;
}
public static void main(String[] args) {
System.out.println(factorize(24)); // [[2, 3], [3, 1]]
}
}
据我所知,你所做的只是发布一些要求,并要求其他人解决问题。那是offtopic@Paul我想现在你可以看到那里有什么了,这取决于你可以重新验证你的评论和其他东西。谢谢。也许可以转学数学?我对那个网站不太了解——这是不是关于那个主题?这绝对不是一个程序设计question@AdamSmith我从来没有要求一个程序或代码,我只是问什么方法可以解决这个问题。你的选票是你的选择,不是我的。甚至我也对解决问题和寻找答案感兴趣,而不是投票和评论。嗯,X和Y必须大于N。@Henry我犯了错误吗?是的,例如,如果X