你可以創建自己的類,它曾經爲對每邊田,但它是可以接受的,方便使用Map<Integer, Integer>
。一個基本的實現是:
private static Map<Integer, Integer> factorize(int number) {
Map<Integer, Integer> factors = new HashMap<Integer, Integer>();
for (int i = 1; i < Math.sqrt(number); i++) {
if (number % i == 0)
factors.put(i, number/i);
}
return factors;
}
下面是一些測試代碼,以顯示它如何會被稱爲什麼結果是:
public static void main(String[] args) {
Map<Integer, Integer> factorPairs = factorize(12345);
for (Map.Entry<Integer, Integer> factor : factorPairs.entrySet())
System.out.println(factor.getKey() + " x " + factor.getValue());
}
輸出:
1 x 12345
3 x 4115
5 x 2469
15 x 823
這應該是足夠讓你開始吧
目前還不清楚究竟是什麼你不知道該怎麼辦:該
F2
S可利用平凡重新計算。你能發佈迄今爲止的代碼嗎? – Taymon 2011-12-30 03:42:11所以你要找兩個乘數到'a'並加起來到'b'的數字;我理解正確嗎?如果是這樣的話,是否有必要遍歷'a'的所有因素?另一種方法可能就是將這些數字表示爲二次方程的根,並應用二次方程式。這應該採取一兩行代碼,沒有任何迭代。如果您認爲這是您嘗試做的有效方法,那麼再次發佈,我會提供更全面的答案。 – 2011-12-30 03:47:58